我的OC练习(二):创建类的小“意外”
来源:互联网 发布:linux exec() 编辑:程序博客网 时间:2024/04/29 10:45
刚刚进行多文件练习的时候发生了一个有意思的“意外”。
/*非规范代码,请勿模仿*/
然后我意识到错误的时候发现,xcode的预编译竟然没有报错!会不会这么写也可以?于是我做了一次尝试。我在头文件的@interface中仅申明了对象方法,代码如下:
我用cocoa类自动创建了一对文件Goods.h和Goods.m,然后我误将Goods.m看成了Goods.h,在@implementation里进行了实例变量的定义。如下:
#import "Goods.h"@implementation Goods{ //实例变量 int _gid; NSString * _name;}//set方法-(void)setName:(NSString*)name{ _name=name;}-(void)setGid:(int)gid{ _gid=gid;}//get方法-(NSString*)name{ return _name;}-(int)gid{ return _gid;}@end
/*非规范代码,请勿模仿*/
然后我意识到错误的时候发现,xcode的预编译竟然没有报错!会不会这么写也可以?于是我做了一次尝试。我在头文件的@interface中仅申明了对象方法,代码如下:
#import <Foundation/Foundation.h>@interface Goods : NSObject-(void)setName:(NSString*)name;-(void)setGid:(int)gid;-(NSString*)name;-(int)gid;@end
然后在main函数里尝试通过调用set和get方法,看看是否可以对我在@implementation中申明的实例变量进行,也就是说我想看看我定义在@implementation里的东西是不是能和定义在@interface里定义的一样有效果。于是我写了如下代码:
#import <Foundation/Foundation.h>#import "Goods.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... Goods * test=[Goods new]; //创建对象 [test setName:@"goods1"]; [test setGid:100]; NSLog(@"%@",[test name]); NSLog(@"%d",[test gid]); } return 0;}编译运行没有报错,同时输出也是预想的结果:
所以我在@implementation里定义的实例变量是确实发挥着作用的。
这虽然是一种不规范的代码格式,但由此却提出一个问题,@interface和@implementation的作用与界限究竟是什么。看来还需要更深刻的理解和学习。
0 0
- 我的OC练习(二):创建类的小“意外”
- OC-类的创建练习
- 我的OC练习(一)
- 我的OC练习(四)- NSDate类实践
- 我的OC练习(三)- 类的继承实践练习
- OC类的练习
- 意外的小收获
- OC小练习:字符串的应用
- 我的OC练习(六)- 协议与代理
- 我的OC练习(七)- NSArray操练
- 黑马程序员------OC中类的创建练习
- 我的OC练习(五)-@property的使用和子类继承的练习
- 我的OC升级之路(二)
- 优化的意外惊喜 (二)
- [oc实战练习二]程序里面的网络请求
- oc集合类的创建
- 意外的意外
- OC学习笔记之OC类的设计练习实战
- Min栈——用O(1)时间复杂度返回当前栈中最小元素
- 互联网银行:一流的售后体验
- Hadoop-2.5.0源码编译-记录
- WordPress主题支持导航菜单
- map = new TreeMap<String, List<String>>().descendingMap();
- 我的OC练习(二):创建类的小“意外”
- QWS_MOUSE_PROTO该如何写
- 2015.11.07_07_03_Linux文件查找详解
- 汉诺塔
- 从IT到DT:数据比你更靠谱
- 在MYSQL中存储数组
- win8电脑右键无响应,右键很慢,右键卡死解决
- Anroid Activity方向锁定及其横竖屏切换
- 使徒行者:痛苦,源自于心中的使命