OC:属性、点语法、KVC】的更多相关文章

属性:快速生成setter和getter 属性也包括:声明和实现 1.属性的声明写在.h中 格式:@property 数据类型 变量名; 如果实例变量一致的时候,属性的声明可以合并,每一个属性之间使用,分隔 2属性的实现写在.m中 格式:@synthesize 数据类型 变量名; Xcode5.0之后,属性的实现部分也不需要写了 当你同时重写setter和getter时,系统就不会再自动生成@synthesize name=_name; 属性的优化 1.声明的时候同一种数据类型可以合并 2.实例…
OC基础 点语法的使用 1.创建一个Student类继承于NSObject,Student.h文件 #import <Foundation/Foundation.h> @interface Student : NSObject { NSString *_name; NSString *_nickName; } //@property定义属性 //1,它给该类声明了一个属性名+下划线的变量 //2,它给该类声明了一个getter方法和一个setter方法 //修饰符 //atomic和nonat…
一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Category) 2. 格式 ➢ 分类的声明 @interface 类名 (分类名称) // 方法声明 @end ➢ 分类的实现 @implementation 类名 (分类名称) // 方法实现 @end 3. 好处 ➢ 一个庞大的类可以分模块开发 ➢ 一个庞大的类可以由多个人来编写,更有利于团队合作 ➢ …
Swift与OC两种语法写单例的区别 例如写一个NetworkTools的单例 (1)OC写单例 + (instancetype)sharedNetworkTools { static id instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; //这里可以做一些初始化 }); return instance; } (2)Swift写单例 /…
系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController <UITabBarDelegate, NSCoding> @property(nonatomic,readonly) UITabBar *tabBar @end //如上述代码,UITabBarController类有一个只读的属性tabBar,想用自定义的WZTabBar对象来替换UITabBarC…
一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age; 6 NSString *_name; 7 } 8 9 - (void)setAge:(int)age; 10 - (int)age; 11 12 - (void)setName:(NSString *)name; 13 - (NSString *)name; 14 15…
//margin 形式语法: [ <length> | <percentage> | auto ]{1,4} //合法实例: margin: style /*单值语法 */ 举例: margin: 1em; margin: vertical horizontal /*二值语法 */ 举例: margin: 5% auto; margin: top horizontal bottom /*三值语法 */ 举例: margin: 1em auto 2em; margin: top ri…
1.属性(@property和@Synthesize) 1> 属性是 Objective-C 2.0 定义的语法,提供 setter 和 getter 方法的默认实现.在一定程度上简化代码,并且提高程序的安全性. 2> @property 属性的声明:在 .h 文件中使用 @property 声明属性. 以实例属性 _name 为例: 属性声明:@property NSString *name; 相当于在 @interface 中声明两个方法: setter方法:- (void)setName…
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)ARC的判断准则:只要没有强指针指向对象,就会释放对象 1.ARC特点 1> 不允许调用release.retain.retainCount 2> 允许重写dealloc,但是不允许调用[super dealloc] 3> @property的参数 * strong :成员变量是强指针(适用于OC对象类型) * weak :成员变量是弱指针(适用于OC对象类…
转载自:http://liuyafang.blog.51cto.com/8837978/1543715 什么时setter,getter, 在OC里, 为实例变量赋zhi的方法称作setter(设置器) 读取实例变量值的方法称作getter(访问器) 我们之前写的那些赋值取值的方法都可以称作setter和getter setter.getter的书写格式 OC里规定里setter和getter的书写格式 如果一个实例变量是 int age: 或者int_age: setter的书写格式如下 -…
学习了这么久的设计模式方面的知识,最大的感触就是,设计模式不能脱离语言特性.近段时间所看的两本书籍,<大话设计模式>里面的代码是C#写的,有一些设计模式实现起来也是采用了C#的语言特性(C#的API,抽象类,在OC中是没有抽象类.没有多继承关系),<设计模式之禅>里面的代码是JAVA写的,与OC差距也是比较大. 但是我想,这些都不是问题,学习设计模式主要学习的是其中的思想,并将之改造成自己所熟悉语言的模式,大同小异.所需要注意的是,在学习的过程中,将之与语言结合起来,多思考.多实践…
前一篇文章我们介绍了OC中最常用的文件操作:http://blog.csdn.net/jiangwei0910410003/article/details/41875015,那么今天来看一下OC中的一个比较有特色的知识点:KVC和KVO 一.KVC操作 OC中的KVC操作就和Java中使用反射机制去访问类的private权限的变量,很暴力的,这样做就会破坏类的封装性,本来类中的的private权限就是不希望外界去访问的,但是我们这样去操作,就会反其道而行,但是我们有时候真的需要去这样做,哎.所以…
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementation.@end @public.@protected.@private.@selector @try.@catch.@throw.@finally @protocol.@optional.@required.@class @property.@synthesize.@dynamic self.sup…
这些日子在家里学习runtime,看runtime的一些方法和前辈们的博客,我也尝试着写几个runtime有效的运用 一.给对象属性赋值,例如一个WebEntity类 她有三个属性:NSString.NSInteger #import "WebEntity.h" // 假设是一个网络数据返回实体类 @interface WebEntity () @property (nonatomic, strong) NSString *string; // O-C字符串类 @property (n…
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)id 1)简介:万能指针,能指向任何OC对象,相当于NSObject * id类型的定义 typedef struct objc_object { Class isa; } *id; 2)使用注意 // 注意:id后面不要加上* id p = [Person new]; 3)局限性 调用一个不存在的方法,编译器会马上报错 int main(int argc, con…
1 属性和实例变量 :属性 ==  实例变量声明 + setter 方法+ getter 方法 在老版本的 OC 语言中,我们需要同时声明属性和底层实例变量,那时,属性是 OC 语言的一个新的机制,并且要求你必须声明与之对应的实例变量. 后来,苹果将默认编译器从 GCC 转换为 LLVM(low level virtual machine),从此不再需要为属性声明实例变量了.如果 LLVM发现没有一个匹配属性的实例变量,它将自动创建一个以下划线开头的实例变量.但是生成的实例变量是私有的,子类不能…
Block //定义一个求两个数最大值函数 int maxValue (int ,int); //函数的实现 int maxValue (int a, int b){ return  a > b ? a : b; } //函数指针 (调用可以用 p 或者 maxValue) int (* p)(int,int) = maxValue; int max =  p(24, 48); block是一个匿名函数,也是一个函数,只不过没有名字而已.也叫语法块. 把函数名去掉剩余的部分就是函数类型. 对于B…
IOS中的@property 与 assign copy retain 的区别参考 //@理解为 OC 代码的标记 //如何去创建一个对象 创建对象的两步: // (1)为对象在堆区中开辟空间 Student *stu =[Student alloc]; //在 OC 里面调用方法,采用的是消息发送机制 //在才OC里所有的对象都用指针变量去储存 //(2)初始化 [stu init]; //面向对象 与 过程的区别 //面向过程:以事件为中心,考虑完成事件的详细步骤 //面向对象:以事物(类…
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和转发.下面通过分析Apple开源的Runtime代码(我使用的版本是objc4-646.tar)来深入理解Objective-C的Runtime机制. Runtime数据结构 在Objective-C中,使用[receiver message]语法并不会马上执行receiver对象的message方…
高级语法精讲 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 #define TOBJ(n) [NSNumber numberWithInt:n] NSSet *set1=[[NSSet alloc]initWithObjects:TOBJ(2),TOBJ(3),TOBJ(3),TOBJ(1),TOBJ(5), nil]; 2)用类方法创建一个不可变集合对象…
一.OC简介 在C语言的基础上,增加了一层最小的面向对象语法:完全兼容C语言:可以在OC代码中混入C语言代码,甚至是C++代码:可以使用OC开发Mac OS X平台和iOS平台的应用程序. 二.OC语法预览 (一)关键字 基本上所有的关键字都是以@开头的,如@interface  @implementation  @public等,少部分没有以@开头,如id,_cmd等 (二)字符串以@开头 C语言字符串:“hello” OC语言字符串:@“hello” (三)其他语法 基本类型:5种,增加了布…
1.定义一个属性,编译器会自动编写相关的存取方法和实例变量,如果不想使用系统默认的实例变量,可以使用@synthesize(合成)语法来指实例变量的名字,如果不想编译器自动合成存取方法,则可以自己实现.如果要阻止编译器自动合成存取方法,和实现属性所用的实例变量,可以使用@dunamic关键字,即使你没有定义存取方法,编译器也不会报错,如果用代码访问属性,编译器也不会警示. 2.…
1,哈哈哈,是时候来一波Python,其实没办法,最近在做后台的时候,需要用到Python来调试接口,下面是它的简单的语法,权当是记录. 2, #!/user/bin/python # coding=utf-8 # print "Hello World" ; """ 1,这里是多行注释,可以使用三个双引号或者三个单引号 """ """ 2, Python 3.0版本已将将print作为一个内置函数…
table:表格元素及属性 <table width="80%" border="1" cellspacing="1" cellpadding="4" bgcolor="#CC99FF" bordercolor="#0000FF" align="center"><tr><td> </td><td> </…
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)点语法 点语法其实本质上还是方法调用 当使用点语法时,编译器会自动展开成相应的方法 1)利用点语法代替set方法和get方法 ①方法调用 Student *stu = [Student new]; [stu setAge:]; int age = [stu age]; ②点语法 stu.age = ; int age = stu.age; 注意点:  死循环 - (…
转载请注明:http://www.cnblogs.com/letougaozao/p/3631105.html 概念 内存管理 NSString的copy实例 对象的copy实例 一.概念 目的:在改变原有对象的时候,不会改变新对象的值 Copy:实现NSCopying协议,创建的是一个不可变副本 MutableCopy:实现NSMutableCopying协议,创建的是一个可变副本 二.内存管理 深拷贝:产生新的对象,所以源对象计数器不变>>>对象拷贝 浅拷贝:不产生新对象,所以源对象…
// 属性关键字 /* 1.ARC下(自动管理内存,自动引用计数)(IOS) strong,weak ----------------------------------------- 2.MRC下(手动管理内存,手动引用计数) copy       NSString assgin     基本数据类型 retain     对象类型 3.原子性 atomic      支持多线程 nonatomic   不支持多线程  <---目前就用这个 --------------------------…
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)分类Category 1) 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法,分类(Category) 2)格式 1>分类的声明 @interface 类名 (分类名称) // 方法声明 @end 2>分类的实现 @implementation 类名 (分类名称) // 方法实现 @end @implementation Person (JJ) - (v…
SELECT c.NAME AS [Column Name], t.NAME AS [Data type], c.max_length AS [Max Length], c.precision, c.scale, c.is_nullable AS [Is Nullable], c.is_identity AS [Is Identity], ) [Primary Key], i.type_desc, OBJECT_SCHEMA_NAME(fk.object_id) + '.' + OBJECT_N…
C#对JAVA: 1.扩展方法 2.部分类 3.动态对象 4.匿名返回类型 5.表达式树 6.Linq 7.没有函数指针,委托,事件的直接提供方式 8.JAVA接口不规定以I开头,这个很烂的思想! JAVA对C#: 1.匿名内部类,即可以直接new一个含方法实现的接口 (注意:1.是new 接口:2.不同于普通C#的匿名方法,当然也可以说是实现某接口方法的动态对象,但这样说就有点纠结了) 2.观察者接口,直接实现接口则可直接实用 3.线程接口,实现即可实用,但要继承线程类才有start. 4.j…