
Objective-C学习
该专栏主讲Objective-C自学和使用中的一些重点和难点。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
fswy
欲当大事,需是笃实。
展开
-
Objective-C学习之instancetype、id、NSObject的区别
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2016-02-22 17:39:20 · 588 阅读 · 0 评论 -
Objective-C学习之description、 SEL、类本质、self和super用法
一:description方法description有对象方法和类方法两种,(是NSObject类的方法) 1,-description(对象方法)使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出。(系统会自动调用打印对象的description方法)而如果打印NSString对象的话,默认返回的就是NSString字符串2,+description转载 2016-02-23 09:51:03 · 711 阅读 · 0 评论 -
Objective-C学习之NSPredicate(查询)
简介 Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。定义(最常用到的方法)NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...]; Format (1)比较运算符>,<,==,>=,<=,!= 可用于数值及字符串转载 2016-05-18 16:06:55 · 1215 阅读 · 0 评论 -
Objective-C学习之简单的字符串遍历方法
字符串遍历- (void)viewDidLoad{ [super viewDidLoad]; //经典的字符串赋值 NSString *str = @"YUSONGMOMO"; //字符串的长度 int count = [str length]; NSLog(@"字符串的长度是%d",count); //遍历字符串中的每一个字符 for(in原创 2016-05-18 16:08:08 · 896 阅读 · 0 评论 -
Objective-C学习之@property
@Property是声明属性的语法,它可以快速方便的为实例变量创建存取器,并允许我们通过点语法使用存取器。 直接在类的声明中可以通过@property生成setter 和 getter 方法的声明和实现,同时它还生成一个私有的成员变量 _属性名称 存取器(accessor):指用于获取和设置实例变量的方法。用于获取实例变量值的存取器是getter,用于设置实例变量值的存取器是setter。转载 2016-05-18 16:18:46 · 622 阅读 · 0 评论 -
Objective-C学习之self与super
当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用 super 时,则从父类的方法列表中开始找。然后调用父类的这个方法(从super出现的在的方法所在的类的父类开始查找。) self和super的用法: self、super是一个指针,self谁调用了当前方法,self就指向谁而super指向了当前类的父类,如果super在类方法中,它就代表了调用当前类原创 2016-05-18 16:22:06 · 489 阅读 · 0 评论 -
Objective-C学习之NSMakeRange
NSMakeRange(loc,len) NSMakeRange是一个结构体类型,包含两个参数,位置和长度。表示字符串要传进来从哪里开始的位置和需要的长度。NSString *str = @"1234567890"; [str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@""]; N原创 2016-05-18 16:25:16 · 3200 阅读 · 0 评论 -
Objective-C学习之UIDevice、NSBundle、NSLocale
UIDevice UIDevice提供了多种属性、类函数及状态通知,帮助我们全方位了解设备状况。从检测电池电量到定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息。UIDevice类还能够收集关于设备的各种具体细节,例如机型及iOS版本等。其中大部分属性都对开发工作具有积极的辅助作用。下面的代码简单的使用UIDevice获取手机属性。//设备相关信息转载 2016-05-18 16:43:08 · 504 阅读 · 0 评论 -
Objective-C内存管理学习之block
block是一种数据类型,封装代码 函数不能在方法内部或函数内部,但是block可以 定义block类型的变量的格式 返回值类型 (^ block变量名称)(形参列表);实现格式 ^ 返回值类型(形参列表){ 语句…… }; 定义一个无参无返回值的block类型的变量void (^ block) = ^{ NSLog(@"tesgBlock");}block();有原创 2016-05-18 17:02:53 · 422 阅读 · 0 评论 -
Objective-C学习之objc_property_t(获取类和协议的属性)
objc_property_t 属性类型,指向objc_property结构体typedef struct objc_property *objc_property_t; 通过class_copyPropertyList和protocol_copyPropertyList方法获取类和协议的属性objc_property_t *class_copyPropertyList(Class cls, u转载 2016-05-18 17:16:16 · 1920 阅读 · 0 评论 -
Objective-C学习之NSSet、NSMutableSet
NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet,NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray(是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列转载 2016-05-19 09:18:47 · 475 阅读 · 0 评论 -
Objective-C学习之NSUserDefaults(存储轻量级的本地数据)
NSUserDefaults简介 NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。实例化[NSUserDefaults standardUserDefaults]数据存储 1、将数据全部存储到转载 2016-05-19 09:23:58 · 764 阅读 · 0 评论 -
Objective-C学习之NSDateFormatter
NSDateFormatter调整时间格式的代码 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。 例如: //实例化一个NSDateFormatter对象NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//设定时间格式,这里可以设置成自己需要转载 2016-05-19 10:11:10 · 402 阅读 · 0 评论 -
Objective-C学习之NSDateComponents
NSDateComponents NSDateComponents封装在一个可扩展的,面向对象的方式的日期组件。它是用来弥补时间的日期和时间组件提供一个指定日期:小时,分钟,秒,日,月,年,等等。它也可以用来指定的时间,例如,5小时16分钟。一个NSDateComponents对象不需要定义所有组件领域。当一个NSDateComponents的新实例被创建,日期组件被设置为NSUndefinedD转载 2016-05-19 10:13:29 · 1962 阅读 · 0 评论 -
Objective-C学习之#import与@class的区别
#import与@class的区别 1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。 2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引转载 2016-05-19 10:15:28 · 416 阅读 · 0 评论 -
Objective-C学习之NSRunLoop
NSRunLoop 在Cocoa中,每个线程(NSThread)对象中内部都有一个run loop(NSRunLoop)对象用来循环处理输入事件,处理的事件包括两类,一是来自Input sources的异步事件,一是来自Timer sources的同步事件; run Loop在处理输入事件时会产生通知,可以通过Core Foundation向线程中添加run-loop observers来监听特转载 2016-05-19 10:24:47 · 407 阅读 · 0 评论 -
Objective-C学习之NSCoding协议
要编码的对象,必须实现NSCoding协议。@protocol NSCoding-(void) encoderWithCoder:(NSCoder *) aCoder;-(id) initWithCoder:(NSCoder *) aDecoder;@end当对象需要保存自身时-encoderWithCoder:方法被调用当对象需要加载自身时-initWithCoder:方法被调用initWithC转载 2016-05-19 14:12:22 · 1594 阅读 · 0 评论 -
Objective-C学习之initWithFrame的理解
initWithFrame方法的理解 有时候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么? 那就通过查资料弄明白。 1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸)。 当然,其他UI对象,也有initWithFrame方法,但是,我转载 2016-05-19 14:15:29 · 1373 阅读 · 0 评论 -
Objective-C学习之实例变量
_变量名 说明这是一个实例变量,实例变量不能直接被赋值,所以只能通过普通方法或者属性对实例变量进行赋值 _xxx访问的是xxx的地址。 self.xxx访问的是xxx的getter。 这两者并不是完全等价的,self.xxx是用objc_msgSend发消息,_xxx或者self->xxx则是直接访问内存地址, 一般建议在init里面用_xxx,其他地方用self.xxx self.xx原创 2016-05-19 15:46:04 · 373 阅读 · 0 评论 -
Objective-C学习之状态栏(UIStatusBar)
IOS上 关于状态栏的相关设置(UIStatusBar) 知识普及ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这两个概念,后面会用到:前景部分:就是指的显示电池、时间等部分;背景部分:就是显示黑色或者图片的背景部分;如下图:前景部分为白色,背景部分为黑色 设置statusBar的【前景部分】简单来说,就是设置显示电池电量、时间、网络部分标示的颜色, 这里只能转载 2016-05-19 16:48:44 · 667 阅读 · 0 评论 -
Objective-C学习之常见的数据类型的转换
1、不可变字典转可变字典 NSDictionary * dict = [[NSDictionary alloc] init]; NSMutableDictionary * mDict = [NSMutableDictionary dictionaryWithDictionary:dict]; 2、不可变数组转可变数组NSArry *array = [NSArray array];NS原创 2016-05-20 11:01:59 · 441 阅读 · 0 评论 -
Objective-C学习之UIGravityBehavior仿真行为(重力、碰撞)
重力特性UIGravityBehaviorUIDynamicBehavior:仿真行为,是动力学行为的父类,基本的动力学行为类UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushBehavior以及UIDynamicItemBehavior均继承自该父类UICollisionBehavior原创 2016-05-20 13:53:41 · 1050 阅读 · 0 评论 -
Objective-C学习之clipsToBounds的应用(隐藏超出的view——剪边操作)
view添加view,并剪边(UIView属性clipsTobounds的应用)如题,有两个view: view1,view2 view1添加view2到其中,如果view2大于view1,或者view2的坐标不在view1的范围内,view2是盖着view1的,意思就是超出的部份也会画出来UIView有一个属性,clipsTobounds 默认情况下是NO, 如果,我们想要view2把超出的那原创 2016-05-20 13:56:03 · 804 阅读 · 0 评论 -
Objective-C学习之userInteractionEnabled(UIImageView无法响应事件)
用UIImageView作为背景,但直接把按钮或者UITextField放在上面无法相应事件; 原因:userInteractionEnabledA Boolean value that determines whether user events are ignored and removed from the event queue. 译:一个布尔值,它决定了是否用户触发的事件被该视图对象忽转载 2016-05-20 13:58:59 · 792 阅读 · 0 评论 -
Objective-C学习之Notification的使用
iOS下的Notification的使用Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程。本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入转载 2016-05-20 14:49:01 · 532 阅读 · 0 评论 -
Objective-C学习之NSDate(日期)
用于创建NSDate实例的类方法有 + (id)date; //返回当前时间 + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; //返回以当前时间为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval转载 2016-05-20 16:14:05 · 511 阅读 · 0 评论 -
Objective-C学习之NSString(字符串操作)
NSString常用创建初始化方法1、NSString *string0 = @"string";2、NSString *string1 = [NSString stringWithFormat:@"it is %@",@"string"];3、char *c = "string"; NSString *string2 = [[NSString alloc] initWithCStrin原创 2016-05-20 16:22:31 · 537 阅读 · 0 评论 -
Objective-C学习之NSLayoutConstraint(自动布局)
NSLayoutConstraint(自动布局) 添加autoLayout视图使用该方法 +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRela转载 2016-05-20 16:51:11 · 1024 阅读 · 0 评论 -
Objective-C学习之iOS视图控制对象的生命周期
iOS 视图控制对象的生命周期如下:init-初始化程序viewDidLoad-加载视图viewWillAppear-UIViewController对象的视图即将加入窗口时调用;viewDidApper-UIViewController对象的视图已经加入到窗口时调用;viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;viewDidDisa原创 2016-05-23 10:59:44 · 566 阅读 · 0 评论 -
Objective-C学习之prepareForSegue:sender:
在谈到storyboard时,我们多次强调, storyboard 解决的是页面之间的跳转问题。 一个颇为复杂的页面跳转,一旦使用了storyboard,就会四两拨千斤。你只需简单地拖拽,即可完成UIViewController 之间的跳转。 这里面有个神器,一个极为重要的method,它就是: prepareForSegue:sender:从method 简略的表达式,一眼就可看出, 它有转载 2016-05-23 14:30:35 · 1075 阅读 · 0 评论 -
Objective-C学习之Notification补充
定义一个方法 -(void) update{ } 对象注册,并关连消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update) name:@"update"object:nil] 在要发出通知消息的地方 [[NSNotificationCen转载 2016-05-23 14:41:17 · 705 阅读 · 0 评论 -
Objective-C学习之通讯录授权状态
通讯录 查询授权状态 ABAddressBookGetAuthorizationStatus 函数可以查询对通讯录的访问权限 kABAuthorizationStatusNotDetermined 用户还没有决定是否授权你的程序进行访问 kABAuthorizationStatusRestricted iOS设备上的家长控制或其它一些许可配置阻止程序与通讯录数据库进行交互转载 2016-05-23 14:44:32 · 726 阅读 · 0 评论 -
Objective-C学习之init
iOS中init一个对象时,会调用对象的init方法,进入init方法时会调用initWithNibName方法,可调试验证每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是和类似的initWithNibName/awakeFromNib/initWithCoder放在一起还是非常容易让人混淆的.一、loadView永远不要主动调用这个函转载 2016-05-24 09:53:15 · 574 阅读 · 0 评论 -
Objective-C学习之浅复制和深复制
对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的。浅复制只复制对象本身,对象里的属性、包含的对象不做复制深复制复制全部,包括对象的属性和其他对象Foundation框架支持复制的类,默认是浅复制在Foundation对象中:copy是一个不可变的对象时,作用相当于retain当使用mut原创 2016-05-24 10:15:51 · 458 阅读 · 0 评论 -
Objective-C学习之objectForKey:和valueForKey:的不同
从 NSDictionary 取值的时候有两个方法,objectForKey:和valueForKey:,这两个方法具体有什么不同呢? 先从 NSDictionary 文档中来看这两个方法的定义:objectForKey: returns the value associated with aKey, or nil if no value is associated with aKey. 返回指定转载 2016-05-24 10:25:12 · 3427 阅读 · 0 评论 -
Objective-C学习之懒加载(延迟加载)
懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 使用懒加载的好处: (1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合@propert转载 2016-05-24 14:24:08 · 1837 阅读 · 0 评论 -
Objective-C学习之NSCache(缓存类)
NSCache 是苹果官方提供的缓存类,用法与NSMutableDictionary的用法很相似,在AFNetworking和SDWebImage中,使用它来管理缓存 NSCache 在系统内存很低时,会自动释放一些对象; 备注:这句话源自苹果官方文档,不过在模拟器中模拟内存警告时,缓存不会做清理动作;为了确保接收到内存警告是能够真正释放内存,最好调用一下removeAllObjects方法转载 2016-05-24 14:30:17 · 874 阅读 · 0 评论 -
Objective-C学习之图片相关(ImageIO)
#import <ImageIO/ ImageIo.h>//创建图像源CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data,NULL);//获取图片的帧数size_t count =CGImageSourceGetCount(source)图片格式: PNG:无损压缩;压缩没有JPG高;原创 2016-05-24 14:31:59 · 1060 阅读 · 0 评论 -
Objective-C学习之类方法和对象方法的区别
+ 类方法 [类名 方法名]调用- 对象方法 [实例对象 方法名]调用 - 代表实例方法,它在类的一个具体实例范围内执行,也就是说,你咋调用这个方法之前必须先创建一个类的实例;+ 代表类方法,可以通过类名直接调用,不需要创建一个类的实例。原创 2016-05-24 14:35:21 · 1652 阅读 · 0 评论 -
Objective-C学习之常用的类名(持续更新)
常见的类名NSPredicate:用于查询,原理和用法都类似于SQL中的where,作用相当于数据库NSCharacterSet,以及它的可变版本NSMutableCharacterSet,用面向对象的方式来表示一组Unicode字符。它经常与NSString及NSScanner组合起来使用,在不同的字符上做过滤、删除或者分割操作NSRange: 表示范围的结构体NSArray:表示不可变数原创 2016-05-25 10:47:12 · 889 阅读 · 0 评论