免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 770 | 回复: 0
打印 上一主题 下一主题

Chapter-1 认识objective-C [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 02:29 |只看该作者 |倒序浏览
写这个博文的原因有诸多个。既可以促使自己继续学习下去,也可以留作记录。

而且我一直相信,博文是一个最好的简历。

以前只有linux下的编程经验并没有Mac平台下的经验。不过根据我使用mac系统一个多月来的感受是这东西其实跟流行的Ubuntu等差不多,有非常漂亮的UI和操作体验 ,重要的是还有像linux一样的强大的命令行shell。

我的计划以 Obejctive-C -> iOS SDK -> App 这个顺序来学习,中间贯穿XcodeIDE使用的学习。 因为我觉得像Xcode这种IDE是使用当中逐渐熟悉其用法而不是一上来就从头看到尾。 不过这IDE跟其他VS差不多,估计有经验的朋友都很容易上手。

这几天的学习来看Objective-C(以下简称  Obj-C)学习强度介于C++跟C之间。 有C++基础的朋友当然很容易上手,只是C经验的也可以,就是要把思维从面向过程转换到面向对象有点费劲。

好,废话不多,先来一段code来看看大体是啥样的。

这段code展现一个比较简单的有class的程序。还有一点就是这里假设你熟悉C编程语言,而且我重点介绍Obj-C独有的东西,例如下面介绍的Class。


  1. /* Inport System file from Mac os*/
  2. #import <Foundation/Foundation.h>

  3. /* Define Class Fraction */
  4. @interface Fraction : NSObject {
  5. @private
  6.     int up;
  7.     int down;
  8. }

  9. -(void) print;
  10. -(void) setUpNumber:(int)up_number;
  11. -(void) setDownNumber:(int)down_number;
  12. @end

  13. @implementation Fraction

  14. -(void) print
  15. {
  16.     NSLog(@"%d / %d = %d", up , down , up/down);
  17. }

  18. -(void) setUpNumber:(int)up_number
  19. {
  20.     NSLog(@"Setting Up Number with %d", up_number);
  21.     up = up_number;
  22. }

  23. -(void) setDownNumber:(int)down_number
  24. {
  25.     NSLog(@"Setting Down Number with %d", down_number);
  26.     down = down_number;
  27. }
  28. @end
  29. /* __End__ Define Class Fraction */

  30. int main (int argc, const char * argv[])
  31. {

  32.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

  33.     // insert code here...
  34.     NSLog(@"Hope it's the long term way to develop app for Mac Platform");
  35.     
  36.     int a = 10;
  37.     int b = 20;
  38.     int sum = a + b;
  39.     NSLog(@"the sum of a + b = %d ",sum);
  40.     
  41.     Fraction *Fraction_first;
  42.     Fraction_first = [[Fraction alloc] init];
  43.     
  44.     [Fraction_first setUpNumber:1];
  45.     [Fraction_first setDownNumber:5];
  46.     [Fraction_first print];

  47.     [pool drain];
  48.     return 0;
  49. }

1:@interface 用于定义类,后面的:指定其父类
2:@private 指定其私有变量
3:以-(void)开头的一串函数是其method。
4:类定义结束使用@end来结尾
5:这里跟C++不同的是,obj-c中以 [instance method]来调用实例中的method方法,而C++中是instance.method() 或者 instance_pointer->method() 来调用其方法。
6:定义一个实例的方法是 Class_name * instance =[[Class_name alloc] init];
可见是先调用alloc函数,然后依据此结果再调用init函数。我觉得这应该跟C++中调用构造函数是一个道理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP