随笔分类 -  Object-C基础

摘要:-(void)creatPlistFileWithArr:(NSArray *)array{ //将字典保存到document文件->获取appdocument路径 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) ob... 阅读全文
posted @ 2019-01-17 14:50 谦默 阅读(359) 评论(0) 推荐(0) 编辑
摘要:如果要修改对象的属性值1.一般情况下是直接利用对象属性的set方法来修改: Student *stu = [[Student alloc] init]; // set方法的两种书写格式 [stu setAge:10]; stu.age = 10;2.但是如果不知道对象类型呢?那么就可以运用KVC键值编码(Key Value Coding) 间接的修改对象属性KVC实现方式是:使用字符串来描述对象需要修改的属性。KVC的基本调用包括:valueForKey:和 setValue:ForKey: 是以字符串的方式向对象发送消息KVC一般用法:/***************... 阅读全文
posted @ 2014-04-06 15:25 谦默 阅读(1334) 评论(0) 推荐(2) 编辑
摘要:1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer)、媒体层(Media layer)、核心服务层(Core Services layer)、核心操作系统层(Core OS layer)如图:(1)触摸层:为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。它包括以下这些组件:Multi-Touch Events Core Motion CameraView Hierarchy Localization ... 阅读全文
posted @ 2014-03-27 20:44 谦默 阅读(11679) 评论(2) 推荐(0) 编辑
摘要:1.代理模式核心思想:A类委托B类做某件事,然后A类获取B类的执行的返回结果!举例:女孩想去买电影票,但是自己不亲自去而是委托男孩了解电影电影票信息,同时女孩获得男孩买票的结果,代码模拟实现:/*********************************** Gril.h *************************************/#import @class Boy;@interface Gril : NSObject// “女孩”想去买电影票- (void)buyTicket;// “女孩”声明自己的代理对象@property (nonatomic,retain) B 阅读全文
posted @ 2014-03-27 18:42 谦默 阅读(523) 评论(0) 推荐(1) 编辑
摘要:strong:适用于OC对象,作用和非ARC中的retain作用相同,它修饰的成员变量为强指针类型weak:适用于OC对象,作用和非ARC中的assign作用相同,修饰的成员变量为弱指针类型assign:适用于非OC对象类型在OC对象循环引用的时候一端为strong类型,另一段为weak类型示例代码如下:/****************************** Teacher.h文件 ***********************************/#import @class Student;@interface Teacher : NSObject@property (nona 阅读全文
posted @ 2014-03-14 02:15 谦默 阅读(1169) 评论(0) 推荐(0) 编辑
摘要:一、ARC基本简介ARC:Automatic Reference Counting 自动引用完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。开发者不再需要担心内存管理,因为编译器已经处理了一切ARC是自iOS 5之后增加的新特性:ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器比如,Java中的垃圾回收是在运行时自动检测对象有没有用如果没用则进行回收ARC和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化Xcode5之后新建程序默认遵循ARC机制二、ARC基本 阅读全文
posted @ 2014-03-13 16:35 谦默 阅读(1373) 评论(0) 推荐(0) 编辑
摘要:@interface Person : NSObject+ (void)test1;- (void)test2;@end // 根据.h文件中定义的Person类和方法 执行完这行代码 在内存中如下 Person *person = [[Person alloc] init];SEL就是对方法的一种包装。包装的SEL类型数据它对应相应的方法地址,找到方法地址就可以调用方法1.方法的存储位置在内存中每个类的方法都存储在类对象中每个方法都有一个与之对应的SEL类型的数据根据一个SEL数据就可以找到对应的方法地址,进而调用方法SEL类型的定义: typedef struct objc_s... 阅读全文
posted @ 2014-03-08 01:11 谦默 阅读(3133) 评论(1) 推荐(0) 编辑
摘要:1.description方法是NSObject自带的方法,包括类方法和对象方法+ (NSString *)description; // 默认返回 类名- (NSString *)description; // 默认返回 2.默认情况下利用NSLog和%@输出对象的时返回的就是类名和内存地址3.修改NSLog和%@的默认输出:重写类对象或者实例对象的description方法即可。因为NSLog函数进行打印的时候会自动调用description方法/******************************** Person.h文件***************************** 阅读全文
posted @ 2014-03-07 19:21 谦默 阅读(4524) 评论(0) 推荐(0) 编辑
摘要:1.类也是个对象类是一个对象是Class类型的对象简称类对象Class类型的定义// 一个任意的类型,表示一个Objective-C类typedef struct objc_class *Class;类名就代表着类对象,每个类只有一个类对象获取类对象 // 获取类对象两种方式person1 和 person2 Class person1 = [Person class]; Person *p = [Person new]; Class person2 = [p class]; // 类对象调用类方法 Person *person3 =... 阅读全文
posted @ 2014-03-07 13:46 谦默 阅读(730) 评论(0) 推荐(0) 编辑
摘要:/******************* NSString+NumCount.h文件 ******************************/#import @interface NSString (NumCount)// 给NSString类扩充一个类方法计算字符串中数字的个数+ (int)numberOfString:(NSString *)str;// 给NSString类扩充一个对象方法计算字符串中数字的个数- (int)numberCount;@end/******************* NSString+NumCount.m文件 ********************* 阅读全文
posted @ 2014-03-06 18:18 谦默 阅读(255) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/duxinfeng2010/article/details/7606261先说说NSInteger 与 NSUInteger,在看书上代码是遇见NSInteger和NSUInteger,不知道什么时候用NSInteger,什么时候用NSUInteger,在网上搜了一下,NSUInteger是无符号的整型, NSInteger是有符号的整型,在表视图应用中常见 NSUInteger row= [indexPath row];因为这是显示tableViewCell有多少个,只能是非零整数的,也就是说,NSUInteger常用于索引值;int与 NSI 阅读全文
posted @ 2014-03-06 18:03 谦默 阅读(602) 评论(0) 推荐(0) 编辑
摘要:1.需求:如果对一个类在不更改代码的基础上要为它再扩充额外的方法可以使用继承和分类2.分类作用:可以在不修改原来类代码的基础上,给某一个类扩充一些对象方法或者类方法,因此一个类可以有多个分类实现:分类也是类因此也有声明和实现,分类一般以要实现的功能或者模块命名声明:@interface 类名(分类名称)@end实现:@implementation 类名(分类名称)@end 3.注意(1)在分类只能增加方法,不能增加成员变量,如果要增加成员变量的话该考虑用继承去实现(2)在分类实现方法中可以访问类中的成员变量但是不能访问类中的属性@property(3)在分类中可以重新实现原类中的方法,但会将原 阅读全文
posted @ 2014-03-06 14:14 谦默 阅读(932) 评论(0) 推荐(1) 编辑
摘要:构造方法:用于在对象创建出来的时候为对象的成员变量或者属性赋值1.构造方法就是初始化对象的方法,它属于对象方法。构造方法分为系统自带和自定义构造方法。 如何创建自定义构造方法:属于对象方法那么以-号开头返回值一般为id类型方法名一般以init开头2.实现方式(1)如果是系统自带的构造方法,需要重写父类中自带的构造方法 比如init(2)如果是自定义构造方法,需要自己去实现 init: 注意:无论是哪种形式的构造方法,在实现构造方法的时候都需要先调用父类的构造方法 。构造方法在执行的时候先调用父类的方法,再执行子类的方法,如果 有多个继承会一层一层的向上找父类方法,将父类方法执行完后再一... 阅读全文
posted @ 2014-03-05 03:05 谦默 阅读(2117) 评论(0) 推荐(0) 编辑
摘要:/** 注意:由@property声明的属性 在类方法中通过下划线是获取不到的 必须是通过 对象名.属性 才能获取到!~ @property和@synthesize关键字是针对成员变量以及get/set方法而言的 从Xcode4.4以后@property已经独揽了@synthesize的功能主要有三个作用: (1)生成了成员变量get/set方法的声明 (2)生成了私有的带下划线的的成员变量因此子类不可以直接访问,但是可以通过get/set方法访问。那么如果想让定义的成员变量让子类直接访问那么只能在.h文件中定义成员 变量了,因为它默认是@protected (3)生成了get/s... 阅读全文
posted @ 2014-03-02 05:20 谦默 阅读(9893) 评论(0) 推荐(0) 编辑
摘要:/* 成员变量的作用范围: @public:在任何地方都能直接访问对象的成员变量 @private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法 @protected:可以在当前类及其子类对象方法中直接访问(系统默认下是用它来修饰的) @package:在同一个包下就可以直接访问,比如说在同一个框架注意: 无论父类是在@interface还是@implementation声明的成员变量子类都能拥有;但是子类能不能直接通过变量名来访问父类中定义的成员变量是需要看父类中定义的成员变量是由什么修饰符来修饰的。 默认:在@implementation... 阅读全文
posted @ 2014-03-01 20:43 谦默 阅读(1378) 评论(0) 推荐(0) 编辑
摘要:/** * 多态:多种形态,是对于对象而言的,如果没有继承就没有多态 * * 在代码中体现:就是通过定义父类指针指向子类的对象 * * 好处:在函数或者方法的参数中如果传入的是父类指针,那么实现的时候可以传入父类或者子类对象 比如多个子类在完成同一个动作的时候,可以直接将父类指针作为参数传入,那么子类在实现的时候就可以将子类作为参数直接调用方法而完成功能。否则就要为每 一个子类写一个方法,这样就可以省略代码。 局限性:父类类型的指针不能直接访问子类中特别的方法,如果要调用的话必须把父类的指针强制转换成为子 类类型 * */#import /***... 阅读全文
posted @ 2014-02-26 18:39 谦默 阅读(1710) 评论(0) 推荐(0) 编辑