除了极少数例外,使用 Xcode 预处理器宏是一种代码气味。C++ 程序员们已经深有体会:" "。不幸的是,还有很多的 Objective-C 程序员尚未领悟到这一点。...本文是Objective-C 中的代码气味系列文章中的一篇。 这是一个可以在终端运行的便捷命令。它可以检查并显示当前目录下的源文件,预处理器宏的使用情况,你应该仔细检查。...2、Macros - 宏 Smell #define WIDTH(view) view.frame.size.width 使用 Objective-C 并不意味着不能使用普通的 C 语言函数!...除非您的自定义宏依赖于 Xcode 预处理器宏(如__LINE__),否则请将其重写为一个独立函数。(即便依赖于 Xcode 预处理宏,也要让您的宏调用另一个函数,并尽可能多地转移到该函数中)。...常量字符串通常在多个文件中共享,因此这里介绍如何在 .h 文件中声明常量: extern NSString *const JMRResponseSuccess; 因此,.m 文件中的定义是 NSString
Objective-C中的Blocks实在是太好用了,有了它,我们就可以将“代码块”封装起来,当成变量使用、传递,所以,在Objective-C中,iOS中,许多的回调是用Block来完成的。...实现: AFNetworking的Get方法 在iOS的项目中,AFNetworking应该算是使用的最多的网络库了,它的Get请求的方法接口如下: (AFHTTPRequestOperation *...再次封装 介于AFNetworking只提供了最基本的Get、Post、Put这些方法,所以,我们往往根据业务的接口做了封装,如先定义了请求的类型枚举: typedef NS_ENUM(NSUInteger...,以本次请求的“RequestHolder”为Value,用Objective-C中的NSDictionary来缓存Http请求。...addOperationWithBlock:^{ //删除Url对应的请求 [_cachedRequests removeObjectForKey:url]; }]; } 总结 本文只是简单地利用Objective-C
作者将他在App中实现的各种各样的UI效果做成个代码库,方便其他人使用。...商店 7)RestKit Restkit是一个开源的Objective-C框架。...可在iOS和Mac OS X的Objective-C中与RESTful Web服务进行简单交互 包含简单的HTTP request/response API 带有强大的对象映射系统,用于减少代码长度 RestKit...支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT、DELETE等) 支持ARC 要求iOS 5.0及以上版本 有一些插件扩展已有的功能,还有一个功能齐全的API 从URL中获取JSON...AFNetworking是最大赢家,现在是GitHub上第三大Objetive-C库,iPhone,iPad上很多著名应用都使用这个类库,是很多人的最爱。
HYBNetworking:基于AFN封装的网络库,可以通用,目前已经提供了通用的GET/POST、上传、下载API等。...当引入此头文件后,便可以在程序里使用任何在UIKit里声明的类 CoreGraphics 它是iOS的核心图形库,平时使用最频繁的point,size,rect等这些图形,都定义在这个框架中,类名以CG...通常我们会将他们分为几类: 值对象 集合 操作系统服务:文件系统、URL、进程通讯 通知 归档和序列化 表达式和条件判断 Objective-C语言服务 NSObject Objective-C 中 NSObject...在Objective-C中,类也是用对象来表示的,而类的isa指针指向它的metaclass(存储静态成员变量和类方法)。 super_class指针:指向父类。 name:类名称。...cache:因为Objective-C的消息转发需要查找dispatch table甚至可能需要遍历继承体系,所以缓存最近使用的方法。 protocols:类需要遵守的协议。
什么是 CocoaPods 从介绍看,它是主要给 Objective-C 项目用的,但是我们可以很容易地混合 Objective-C 和 Swift 到同个项目,从而利用大量的 CocoaPods 库和...假设我们已经有个项目,叫 ProjName ,需要使用一些注明的 CocoaPods 库,比如 AFNetworking....结果刚写几句代码一堆类和变量找不到定义,而且坑爹的是很多时候我们只能靠猜测,判断这些 Objective-C 的定义转换成 Swift 定义是什么样子,用起来就是完全靠蒙!...Swift引用OC 那就是按照和 Objective-C 代码混编的例子,添加 Bridging Header !...#import AFNetworking/AFNetworking.h> 如果没有自动创建头文件的话,这个配置在项目的 Build Settings 中的 Swift Compiler – Code
可选 MySQL、Oracle、PostgreSQL sonar-objective-c插件 sonarqube 默认没有扫描 oc 的检查,sonarqube 官方的 sonar-objective-c...需要在找一个免费的插件,在github找到两个项目 插件一 https://github.com/Backelite/sonar-objective-c 这个插件在三年前没有修改了,在使用中发现有些扫描规则并没有...项目实验 上面的软件安装完成后,基本上具备的代码扫描的条件.找一个开源项目实验下 使用网络库AFNetworking项目:https://github.com/AFNetworking/AFNetworking...Objective-c分析插件出错(ERROR: The rule 'OCLint:compiler warning' does not exist, 刚才上面提到的sonar-objective-c插件并没有处理...参考资料: [1]:如何使用脚本读取Xcode 11中的当前应用程序版本(https://stackoom.com/question/3q09t/如何使用脚本读取Xcode-中的当前应用程序版本) [2
解决方法:在头文件中,将所继承的父类UITableViewController 改成 UIViewController。...systemInfo.machine encoding:NSUTF8StringEncoding]; http://blog.csdn.net/luoyeffcs/article/details/18610839 5 objective-c...ASCII NSString转换 objective-c ASCII NSString转换--分享 // NSString to ASCII NSString *string = @"A"; int...错误显示:direct access to Objective-C's isa is deprecated in favorof object_getClass() 看资料说是 使用 array...下面的代码使用了NSNull来判断字典某个键的值是否为空。但是这种判断方法,似乎对于空集合类不大奏效。
《Objective-C基础教程》第8章 Foundation Kit介绍 《Objective-C基础教程》第9章 内存管理 《Objective-C基础教程》第10章 对象初始化 《Objective-C...的,我也是看完了才知道,但看iOS8的课程也是能同步用Objective-C完成demo的,两边的方法名称完全一样,只有语法的不同。...init方法中返回值使用instancetype取代id作为返回。[原因] 单例必须线程安全。...AFNetworking AFNetWorking一款轻量级网络请求开源框架,基于iOS和mac os 网络进行扩展的高性能框架 IOS 网络请求之 AFNetWorking 3.x 使用 FMDB...Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法 《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》阅读笔记
Swift Objective-C Boolean Bool BOOL Number + + String String NSString Localized String String NSString...在 Objective-C 里面可以对应 NSInteger、NSNumber 等。...Objective-C IBAction IBOutlet IB_DESIGNABLE IBInspectable IBOutletCollection(ClassName) @IBDesignalbe...IB 中的复制与粘贴 command + c command + v 利用 Media Library 快速设置图片 IB 开发中遇到的一些小 bug 最好的做法就是重启 Xcode。...无法连线 IB 文件是否与源文件关联 @IBAction 红色提示 先在源文件中定义好方法,再从源文件 拖 到 IB 文件进行 连线
主要内容包括:与Runtime交互、Runtime术语、消息机制、动态方法解析、消息转发、壮的实例变量(Non Fragile ivars)、Objective-C Associated Objects...《刨根问底Objective-C Runtime(1)- Self & Super》:本文通过分析clang重写的Objective-C源码,从而解释Objective-C中的self和super在编译器层面分别是如何处理的...文本介绍了利用 Method Swizzling,结合 AOP 来做一些打 Log 的工作。...《QQ 中未读气泡拖拽消失的实现分析》:QQ 中针对强迫症有个很棒的交互,对于那些暂时不想理会的未读信息气泡,可以直接手指拖拽去掉。本文介绍了其实现方法。...《轻松学习 Objective-C 消息转发》:作者在文章中通过一个小例子来讲解什么是消息转发,以及如何消息转发,希望看完这篇文章时大家会彻底的明白 OC 的消息转发机制。
总的来说,我们可以知道一点,就是 Build Phases - Headers 中提到 Public 和 Private 是指可以供外界使用的头文件,而 Project 中的头文件是不对外使用的,也不会放在最终的产物中...首先,由于所有头文件都被当做最终产物保留下来,在结合 Header Search Path 里 Pods/Headers/Private 路径的存在,我们完全可以引用到其他组件里的私有头文件,例如只要使用...回看整个故事的开始,Header Map 是我在研究 Swift 和 Objective-C 混编过程中发现的一个很小的知识点,而且 Xcode 自身就实现了一套基于 Header Map 的功能,在实际的使用过程中...其实,利用 Clang Module 技术也可以解决本文一开始提到的几个问题,但它并不在这篇文章的讨论范围中,如果你对 Clang Module 或者对 Swift 与 Objective-C 混编感兴趣...,欢迎阅读第二篇公众号推文 《从预编译的角度理解 Swift 与 Objective-C 及混编机制》,了解更多的详细信息。
基于AFNetworking封装网络库说明目前已经提供了通用的GET / POST,上传,下载API等。...UI上面;目前只支持GET / POST方法的请求使用到的第三方库有:1.SQLitePersistentObject; 2.JTObjectMapping; 3.AFNetworking; 4.XMLDictionary...pangu.objective-c - 有多种语言实现版〜Pangu.Objective-C:格式化中英文之间的空格(OC)。 异议 - 一个轻量级的依赖注入框架异议。...BabyBluetooth -是一个非常容易使用的蓝牙库,适用于iOS版和Mac OS中,基于原生CoreBluetooth框架封装,可以帮开发者们更简单地使用CoreBluetooth API,使用链式方法体...RuntimeSummary - 一个集合了常用Objective-C Runtime使用方法的Playground。
鉴于现在大部分 iOS 常用库都还是用 OC 实现的,我们常常需要用到一个叫做 Bridging-Header.h 的东西来在 Swift 项目中使用 OC 实现的框架,当然前提是在这个项目里我们不能或者不想使用...Settings 找到 Objective-C Bridging Header 项 然后在里面填上路径,还要注意一下 绝对/相对 路径 我更愿意直接把 xxx.framework 放到项目里,然后使用的时候在顶部写上...如果这个框架是 AFNetworking 的话,我们可以在它的 releases 页面下载到 AFNetworking.framework.zip。 ?...现在我们可以直接把打包好的 framework 文件复制到项目里使用了,以后想用什么框架都可以在这个 cartfile 里面添加,在这个文件夹里取用 framework。...说白了就是一个利用 Carthage 找 framework 文件的方法。
下面还会提到如何在我们的项目中使用CocoaPods, CocoaPods的安装和使用教程请参考链接http://code4app.com/article/cocoapods-install-usage...在本篇博客中提到CocoaPods,是因为我们需要用CocoaPods来引入AFNetWorking,然后在网络请求中使用AFNetWorking来实现我们图片的提交。 ...,我们可以通过这个令牌来使用新浪微博提供的API. 1.Get方式的请求 (1)下面会使用公共服务的国家,省份,和城市的接口,来学习一下GET请求方式 ? ...为了简化我们APP的图片的上传,我们就得用到AFNetWorking中的东西了,如何配置和使用CocoaPods请参考上面的链接。 ...中啦,至于想深入的了解一下block回调,请参考前面的博客Objective-C中的Block回调模式。
摘要本文旨在介绍如何在Objective-C中使用MWFeedParser库下载豆瓣RSS内容,同时展示如何通过爬虫代理IP技术和多线程提高爬虫的效率和安全性。...正文MWFeedParser是一个用于解析RSS和Atom feeds的Objective-C库。它简化了feed处理的过程,使开发者能够专注于内容的使用而非解析的细节。...实例以下是一个示例代码,展示了如何在Objective-C中使用MWFeedParser库,并通过爬虫代理提高数据采集的效率和安全性。...Objective-C和MWFeedParser库,结合代理IP技术和多线程,我们可以有效地下载和解析豆瓣RSS内容。...请注意,代码示例中的代理服务器域名、端口、用户名和密码需要替换为实际的爬虫代理服务的相关信息。此外,多线程技术的使用可以显著提升程序的性能,特别是在处理大量数据时。
但是在函数的方法调用参数中直接代入块对象也是块对象的一种非常常见的用法,这时候使用与函数调用关系或栈状态无关的块对象是非常必要的。...5)将block赋值为空,是解掉循环引用的重要方法。 6)还有一种改法,在block接口设计时,将可能需要的变量作为形参传到block中,从设计上解决循环引用的问题。...第四、第五条合起来有个名词叫weak–strong dance,来自于2011 WWDC Session #322 (Objective-C Advancements in Depth) 以下代码来自AFNetworking...第一行:__weak __typeof(self)weakSelf = self; 如之前第四条所说,为防止callback内部对self强引用,weak一下。...typeof是现代GNU C++的关键字,从Objective-C的根源说,他其实来自于C语言,所以AFNetworking使用了继承自C的关键字。
.c文件(第三方开源解压缩库)) [viewfile-1.png] 解决办法:将Build Setting ->Compile Sources As 改为 Objective-C++ 由于修改所有文件的编译类型...,所有可能会导致其他包括c、c++代码的提示错误,不过都是些的提示异常,按提示修改即可。...注意,这里我们使用MLVBLiveRoom组件,需要考虑AFNetworking版本,最新版本的请求方法有变化,组件使用的是旧版本的,我这里指定 pod 'AFNetworking','~> 3.2.1...登录&直播间: 1、通过GET方法在@“https://room.qcloud.com/weapp/utils/get_login_info_debug”的链接请求到 sdkAppID、userSig、...3、使用MLVBLiveRoom组件,需要考虑AFNetworking版本,最新版本的请求方法有变化,组件使用的是旧版本的,我这里指定 pod 'AFNetworking','~> 3.2.1’还可以正常使用
二、Objective-C语言 其中包括如KVO、KVC、分类、扩展、关联对象等系统实现原理和机制,以及NSNotification、属性关键字等相关技术点的考察。...、动态添加方法等。...,如NSLock、递归锁、自旋锁、条件锁等等。...递归锁应该怎样使用? 13. 常见的线程同步问题该怎样解决? 14. 怎样解决DNS劫持? 15. TCP的慢启动特点是怎样的。 16. 你对HTTPS是怎样理解的?...(很多人会说什么retain\release\dealloc,完全没有Get到面试官的考察意图) 25.
现在,你就可以开始使用AFNetworking.h啦。...可以稍微测试一下,在你的项目任意代码文件中输入: #import AFNetworking.h> 或者 #import "AFNetworking.h" 然后编译,看看是否出错。...UMengAnalytics' pod 'UMengShareSetup' pod 'twitter-text-objc' pod 'SSBouncyButton' pod 'QR-Code-Encoder-for-Objective-C...pod 'XMPPFramework' circular dependency pod 'JSQMessagesViewController' pod 'CocoaAsyncSocket' # pod 'Objective-C-RegEx-Categories...p=2777759 CocoaPods使用——关于IOS最低支持版本问题 http://blog.sina.com.cn/s/blog_45e2b66c0101fmcu.html Fix cocoapod