- 浏览: 540938 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1279第一讲1:http://www.duobei.com/ro ... -
ios 方向检测代码
2013-05-26 16:15 15021,添加框架 CoreLocation.framework ... -
ios 晃动检测代码
2013-05-26 15:06 968重写一个类,继承UIWindow实现代码如下: #impo ... -
core data 入门学习
2013-05-22 20:45 805参考网址: http://blog.csdn.net/q1 ... -
iOS 数据库持久化
2013-05-19 14:31 1802-(void) addObserver{ //当 ... -
ios 相关数据网站
2013-05-19 13:35 772天气预报网站:http://www.weste.net/2 ... -
iOS 各种系统文件目录 临时,缓存,document,lib,归档,序列化
2013-05-19 11:15 19242/** 1:Documents:应用中用户数据可 ... -
IOS 导航视图跳转,关闭自身视图
2013-05-05 09:00 7116-(void)clickPress{ secon ... -
IOS 课程 UITable 学习(二)
2013-05-05 08:39 781按照UITable学习一中,继续往下开发。使用的资料在UI ... -
IOS 课程 UITable 学习(一)
2013-04-26 20:00 796在xib上拖一个uitableView ,并把dataSo ... -
iOS 判断用户触摸屏 画图
2013-04-21 17:03 1151// // TouchMoveView.m // U ... -
ios 判断用户触摸屏幕多少次
2013-04-21 16:39 1093#import "SView.h" ... -
设置UIView自动刷新 触摸画图
2013-04-21 14:46 1149#import "MyView.h&q ... -
UITextField 点击return自动消失输入框
2013-04-21 13:40 6133第一步:接口实现协议<UITextFieldDeleg ... -
IOS 矩阵写字 画图
2013-04-21 09:34 1966- (void)drawRect:(CGRect)rect ... -
appStroe
2013-04-19 18:59 759http://itunes.apple.com/cn/genr ... -
iOS 动画一
2013-04-14 16:25 760// // ViewController.m // ... -
iOS 动画一
2013-04-14 14:20 891#import "ViewController. ... -
IOS学习参考书籍
2012-09-16 11:45 1386刚从朋友那里弄到的学习IOS的书籍。放到这里记录一下
相关推荐
基于java的贝儿米幼儿教育管理系统答辩PPT.pptx
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
基于java的消防物资存储系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
TA_lib库(whl轮子),直接pip install安装即可,下载即用,非常方便,各个python版本对应的都有。 使用方法: 1、下载下来解压; 2、确保有python环境,命令行进入终端,cd到whl存放的目录,直接输入pip install TA_lib-xxxx.whl就可以安装,等待安装成功,即可使用! 优点:无需C++环境编译,下载即用,方便
使用软件自带的basic脚本编辑制作的脚本 低版本软件无法输出Excel报告,可以通过脚本方式实现这一功能
基于java的就业信息管理系统答辩PPT.pptx
25法理学背诵逻辑.apk.1g
基于java的大学生校园兼职系统答辩PPT.pptx
做到代码,和分析的源数据
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
适用于ensp已经入门人群的学习,有一定难度
基于java的数码论坛系统设计与实现答辩PPT.pptx
tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl
基于java的医院信管系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-4.2.tar.gz
链表 合并两个链表,链表基础操作