- 浏览: 541681 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (278)
- freemarker (6)
- flex应用 (12)
- Ext应用 (11)
- 软件 (16)
- java (61)
- 报表 (6)
- 框架基础 (6)
- 登录页面素材 (7)
- oracle (1)
- cas (10)
- lucene (6)
- linux (11)
- 视频 (10)
- springmvc (3)
- 视频服务器相关 (12)
- 开发工具 (7)
- IOS (20)
- 网站相关 (4)
- Java 任务调度系统带图形界面的 (1)
- maven (2)
- android (29)
- hadoop (3)
- SpagoBI (3)
- docx4j (4)
- 多线程 (2)
- storm (2)
- mobile 框架 (3)
- scala (1)
- socket (1)
- saiku (1)
最新评论
-
ZXCLTN:
1.streams目录,在里面放些flv,mp3之类的文件,这 ...
red5 整合到tomcat中(二) -
ZXCLTN:
写的没偷没尾的,还不如提供整个项目下载
red5 整合到tomcat中(二) -
01jiangwei01:
测试方法1:测试50个线 ...
hibernate 乐观锁 测试 -
01jiangwei01:
测试方法1:测试50个线程,同时并发访问。目标:只有一个通过, ...
hibernate 乐观锁 测试 -
xiaobadi:
你每次登陆都是跳到http://localhost:8081/ ...
cas 系统实例 服务端配置(二) 自定义登录
1
1.1 @interface指令
@interface Circle:NSObject 表示这是名为 Circle的新定义的接口
1.2 -(void)draw;
前面的短线表明这是Objective-C方法的声明。这是一种区分函数原型与方法声明的方式,函数原型中没有先行短线。短线后面是方法的返回类型,位于圆括号中。Objective-c使用void表示无返回值。
1.3 中缀符
Objective-C中有一种名为中缀符的语法技术。方法的名称及参数都是合在一起的。
例如,可以这样调用带一个参数的方法:[circle setFillColor:kredcolor];
带两个参数的方法调用如下所示:[textThing setStringValue:@"hello there" color:kBlueBolor];
setStringValue:和color:实际上是参数的名称(实际上是方法名称的一部分,后面在详细介绍)
@"hello there"和kBlueBolor是被传递的参数。
1.4 方法定义时,-(void) setFillColor:(ShapeColor) fillColor;此处方法的名称是setFillColor:,结尾处的冒号是名称的一部分,它告诉编译器和编程人员后面会出现参数。(ShapeColor) fillColor,圆括号中的内容指定参数类型,fillColor是参数名.
1.5 冒号是方法名称重要非常重要的组成部分.方法 -(void)scratchTheCat;不同于-(void)scratchTheCat:(CatType )critter;在不含有参数的方法结尾处乱填冒号是错误的。面对编译器错误,可能因为某个多余的冒号而不知所措,并希望能解决这样的错误。可以遵循这个规则:如果方法使用参数,则需要冒号;否则不需要冒号。
2
2.1 @implementation
@implementation是一个编译器指令,表明你将为某个类提供代码。类名出现在@implementation之后。该行的结尾处没有分号,因为在Objective-C编译器指令后不必使用分号。
例如: @implementation Circle
3
3.1 继承语法:@interface Circle:NSObject冒号后面的标识符是需要继承的类。
4
4.1由于在类的定义中,代码被子人的拆分为借口和实现两部分,所以类的代码通常也被分别放在两个文件里。一个文件存放几口部分的代码:类的@interface指令、公共struct定义、enum常量、#defines和extern全局变量等。头文件名称和类名称相同,只是以.h做后缀。例如:Engine类的头文件会被命名为Engine.h,而Circle类的头文件名称则是Circle.h.
4.2 所有实现细节都被放在与类同名,但是以.m为后缀的文件中(有时叫做.m文件)。
5
5.1@property 特性
5.1.1 @property是一种新的编译器功能,表示声明了一个新的对象的属性。
5.1.2 @property float rainHandling;语句表明该类的对象具有float类型的属性,其名称为rainHandling。而且还可以通过调用-setRainHanding:来设置属性,通过调用-rainHandling来访问属性。@property 预编译指令的作用是自动声明属性的setter和getter方法。
5.1.3 @property(copy)NSString *name;通过向name对象添加copy方法,编译器和该类的使用者知道name对象将被复制。
等价于
-(void)setName (NSString *)newName{
[name release];
name = [newName copy];
}
5.1.4 @property(retain)Engine *engine;对engine对象的管理只有保留和释放操作,如果你不曾指定这两种操作中的任何一种,编译器将默认执行赋值操作,而这通常不是你希望对对象执行的操作。
等价于
-(boid)setEngine:(Engine *) newEngine
{
[newEngine retain];
[engine release];
engine = newEngine;
}
5.1.5读写属性(默认情况,可省略):
@property (readwrite,copy)NSString *name;
@property (readwrite,retain)Engine *engine;
5.1.6只读属性
@property (readonly)NSString *name;
@property (readonly)Engine *engine;
当知道@property是只读特性时,编译器将只为该属性生成一个getter方法而不是setter方法。当我们此时调用setter方法时,编译器会报错,点操作符也会报错。
5.1.7 特性不是万能的。特性只支持替代-setBlash和-blah方法,但是不支持那些需要接受额外参数的方法,例如:-(void) setTire:(Tire *) tire atIndex:(int)index;
6
6.1@synthesize也是一种新的编译器功能,表示"创建该属性的访问器"。当遇到代码@systhesize rainHandling;时,编译器自动输出-setRainHandling:和-rainHandling方法的已编译代码。@synthesize预编译指令不同与代码生成,我们永远看不到实现-setRainHandling:和-rainHandling的代码,但是这些方法确实存在,并可以被调用。
6.2@synthesize name = appellation;
有时候我们希望实例变量有一个名称,而公开的属性name具有另一个名称。例如,希望使用其他名称(ruappellation)调用Car类中的实例变量name,则修改Car.h中该实例变量的名称。
@interface Car:NSObject{
NSString appellation;
NSMutableArray tires;
Engine engine;
}
@synthesize name = appellation;编译器将创建-setName和-name方法,但在其实现中却使用实例变量appellation.
7 类别是一种为现有的类添加新方法的方式。想为一个类添加新的方法,包括那些没有源代码的类。
7.1 类别的声明格式为
@interface NSString(NumberConvenience)
该声明有两个特点。首先,现有的类位于@interface关键字之后,其后是位于圆括号中的一个新名称。该声明表示,类别的名称是NumberConvenience,而且该类别将向NSString类中添加方法。只要保证类别名称的唯一性,你可以向一个类中添加任意多的类别。
其次,你可以指定希望向其添加类别的类(本例中是NSString)以及类别的名称(本列中是NumberConvenience),而且你还可以类处添加的方法,最后以@end结束。
由于不能添加新实现变量,因此与类的声明不同的是,类别的声明中没有实例变量部分。
7.2 实现类别
@implementation NSString(NumberConvenience)
与上面相似,这里也包含类名、类别名以及新方法的正文部分。
7.3 类别的局限性
第一,无法向类中添加新的实例变量,类别没有位置容纳实例变量。
第二,名称冲突,类别中的方法与现有的方法重名时,类别具有更高的优先级。
8 协议
正式协议是一个命名的方法列表。与非正式协议不同的是,正式协议要求显示的采用协议。采用协议的办法是在类的@interface声明中列出协议的名称.采用协议意味着你承诺时限该协议的所有方法,否则编译器生成警告来提醒你。
8.1 声明协议:
@protocol NSCopying
-(id) copyWIthZone:(NSZone*) zone;
@end
8.1.1 协议名称必须唯一。
8.2 采用协议,在类的声明中列出该协议的名称,并用尖括号将协议名称括起来。例如,在Car类中采用NSCopying协议,则其类声明像下面这样:
@interface Car:NSObject<NSCopying>
{
//instance variables
}
//methods
@end
而如果Car类要同时采用NSCopying和NSCoding这两个协议,则其声明如下:
@interface Car :NSObject<NSCopying,NSCoding>
9
9.1
id类型表示一个可以指向任何类型的对象的指针,他是一个泛型对象类型。可以将任何对象赋值给一个id类型的变量,也可以将一个id类型的变量赋值给任何类型的对象指针。如果一个用尖括号括起来的协议名称跟随在id之后,则编译器将知道你期望任意类型的对象,只要遵守该协议。
例如:NSControl类中有一个名为setObjectValue:的方法,该方法要求对象遵守NSCopying协议:
-(void) setObjectValue:(id<NSCopying>)obj
9.2 Objective-C 2.0 增加了两个新的协议修饰符:@optional和@required.现在可以这样编写代码
@protocol BaseballPlayer
-(void)drawHugeSalary;
@optional
-(void)slideHome;
-(void)catchBall;
-(void)throwBall;
@required
-(void)swingBat;
@end
发表评论
-
cocoa 开发教程
2013-06-02 19:49 1282第一讲1:http://www.duobei.com/ro ... -
ios 方向检测代码
2013-05-26 16:15 15041,添加框架 CoreLocation.framework ... -
ios 晃动检测代码
2013-05-26 15:06 971重写一个类,继承UIWindow实现代码如下: #impo ... -
core data 入门学习
2013-05-22 20:45 808参考网址: http://blog.csdn.net/q1 ... -
iOS 数据库持久化
2013-05-19 14:31 1810-(void) addObserver{ //当 ... -
ios 相关数据网站
2013-05-19 13:35 775天气预报网站:http://www.weste.net/2 ... -
iOS 各种系统文件目录 临时,缓存,document,lib,归档,序列化
2013-05-19 11:15 19246/** 1:Documents:应用中用户数据可 ... -
IOS 导航视图跳转,关闭自身视图
2013-05-05 09:00 7121-(void)clickPress{ secon ... -
IOS 课程 UITable 学习(二)
2013-05-05 08:39 783按照UITable学习一中,继续往下开发。使用的资料在UI ... -
IOS 课程 UITable 学习(一)
2013-04-26 20:00 799在xib上拖一个uitableView ,并把dataSo ... -
iOS 判断用户触摸屏 画图
2013-04-21 17:03 1156// // TouchMoveView.m // U ... -
ios 判断用户触摸屏幕多少次
2013-04-21 16:39 1098#import "SView.h" ... -
设置UIView自动刷新 触摸画图
2013-04-21 14:46 1151#import "MyView.h&q ... -
UITextField 点击return自动消失输入框
2013-04-21 13:40 6139第一步:接口实现协议<UITextFieldDeleg ... -
IOS 矩阵写字 画图
2013-04-21 09:34 1969- (void)drawRect:(CGRect)rect ... -
appStroe
2013-04-19 18:59 763http://itunes.apple.com/cn/genr ... -
iOS 动画一
2013-04-14 16:25 766// // ViewController.m // ... -
iOS 动画一
2013-04-14 14:20 896#import "ViewController. ... -
IOS学习参考书籍
2012-09-16 11:45 1389刚从朋友那里弄到的学习IOS的书籍。放到这里记录一下
相关推荐
effictive_Objective_C_2.0.pdf
Objective_C是iOS开发的基础,学会了Objective_C再去学习swif也将是易如反掌
Objective_c语法html版,简单易懂
很好的objective_c快速入门教程,挺短的,很容易看完,培养iOS开发的兴趣吧。
这本书详细介绍了Objective-C语言的基础和高级特性,是深入理解Objective-C编程的基石。 Objective-C是一种强大的面向对象的编程语言,它是苹果的iOS和macOS操作系统开发的核心语言。在本书中,作者首先引导读者...
笔记_Objective_c基础教程
Objective_C基础教程最新版(非扫描版)
Objective-C 是苹果公司开发的一种面向对象的编程语言,主要用于iOS和macOS的应用程序开发。本文将深度解析一些Objective-C笔试题中的关键知识点,帮助你更好地理解和掌握这门语言。 1. **内存管理**: - `alloc` ...
Objective-C是一门通用的面向对象编程语言,它将Smalltalk风格的消息传递机制添加到了C语言中。这门语言是苹果公司用于OS X和iOS操作系统以及它们的API(Cocoa和Cocoa Touch)的主要编程语言。Objective-C编程语言的...
- Objective-C是一种通用、面向对象的编程语言,由Mesa Programming Language衍生而来,它向C语言添加了面向对象的能力,是开发iOS和macOS应用的主要语言之一。 - **Cocoa框架**: - 苹果公司提供了多个框架集来...
标签中的"3des 3des_objective 3des_objective-c c___3des objective_3des"进一步确认了这包内容与3DES算法以及Objective-C语言的实现有关。Objective-C是Apple的开发语言,主要用于iOS和macOS平台的应用程序开发。...
从给定的文件信息来看,我们正在探讨的是《Objective-C编程》这本书的第三版,作者是Stephen G. Kochan。本书作为Developer’s Library系列的一部分,旨在为专业程序员提供高质量的参考和教程,聚焦于他们在日常工作...
作者强调,学习Objective-C之前并不需要完全掌握C语言,因为C语言中的很多过程性语言特性在使用Objective-C时是不必要的,尤其对于初学者。Objective-C本身只是C语言的扩展,并不意味着必须首先学习C语言。 #### ...
Objective-C是一种面向对象的编程语言,它是C语言的一个超集,广泛用于iOS和Mac OS X应用的开发。本文将基于提供的文件信息,对Objective-C程序设计的相关知识点进行详细说明。 首先,本书名为《Objective-C程序...
Objective-C是一种面向对象的编程语言,它是在C语言的基础上扩展的,主要应用于Apple的iOS和macOS操作系统。本文将深入探讨Objective-C的关键概念,包括它的语法特性、对象模型以及消息传递机制。 首先,Objective-...
objective c 入门_3,没有比ppt更有内涵的了