Learn Objective-C on the Mac For OS X and iOS (1)

本文介绍了在OS X环境下使用Xcode创建第一个Objective-C程序的步骤,包括创建Command Line Tool项目,理解代码解析,如#import、BOOL、NSLog与printf的区别,以及NSString的使用。Objective-C通过框架和头文件组织代码,使用NS前缀避免命名冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2014-10-19 wcdj

摘要:本文介绍关于Objective-C的一些基础知识,使用的环境是OS X 10.9.5,Xcode 5.1.1版本。


0 创建Hello Objective-C程序

(1) 打开Xcode,选择Create a new Xcode project -> Application -> Command Line Tool,在Type选择Foundation,然后完成。

(2) 修改样本代码。

//
//  main.m
//  Hello Objective-C
//
//  Created by gerryyang on 14-10-19.
//  Copyright (c) 2014年 gerryyang. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSLog(@"Hello Objective-C, wcdj!");
    return 0;
}

(3) 编译运行代码。

可以使用快捷键Command + R,效果如下:


(4) 显示控制台的方法

方法一:View -> Debug Area -> Activate Console

方法二:Command + Shift + C


1 代码解析

(1) Xcode通过.m扩展名来表示文件使用的是Objective-C代码,应由Objective-C编译器处理。而C编译器处理.c文件,C++编译器处理.cpp文件。在Xcode中,所有这些编译工作默认由LLVM处理。这个编译器能够理解C语言的全部3个变体。

(2) #import语句与#include语句的区别。与C语言一样,Objective-C使用头文件来包含结构体、符号常量和函数原型等元素的声明。#import是由Xcode使用的编译器提供的,Xcode在你编译Objective-C、C和C++程序时都会使用它。#import可以保证头文件只被包含一次,无论此命令在该文件中出现了多少次。对比C语言,需要使用头文件卫士来保证这个工作。

(3) 框架。是一种把头文件、库、图片、声音等内容聚集在一个独立单元中的集合体。苹果将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集来提供。Cocoa的组成部分有Foundation和Application Kit框架,此外还有一套支持型框架。Foundation框架处理的是用户界面之下的那些Layer的特性,比如数据机构和通信机制。

(4) 框架和头文件的关系。每个框架都是一个重要的技术集合,通常包含数十个甚至上百个头文件。每个框架都有一个主头文件,它包含了框架内所有的头文件,通过#import主头文件,就可以访问框架内的所有功能。

(5) 读这么多头文件是否会很慢?Foundation框架的头文件占用了近1MB的磁盘空间,包含了14000多行代码,涵盖了100多个文件,只要使用#import <Foundation/Foundation.h>来包含主头文件,就能获得整个集合。也许你担心读取每个文件的文本会消耗编辑器很多时间,但是Xcode非常聪明,它使用预编译头文件来加快读取速度(一种经过压缩的、摘要形式的头文件)。


(6) NSLog和printf的区别。

你可以使用printf()来代替NSLog()函数,但是建议还是使用NSLog()函数,因为它添加了一些特性,比如时间戳、日期戳和自动附加换行符等。


(7) 避免命名冲突的NS前缀。

(a) 事实上,Cocoa给其所有函数、常量和类型名称都添加了NS前缀。例如,NSLog()函数的NS前缀表明此函数来自Cocoa而不是其他的工具包。

(b) 为什么使用NS前缀?使用前缀能避免名称冲突。由于没有集中管理的前缀注册表,所以可以任意选择前缀。许多人使用他们的姓名首字母或公司名称作为前缀。

(c) NS前缀的由来。知道前缀的好处后,但可能还是会奇怪,为何前缀是NS而不是Cocoa。NS前缀的来历要追溯至此工具包还被称为NextSTEP的时候,当时它使NeXT Software公司的产品,苹果公司后来收购了此公司后,没有破坏为NextSTEP编写代码的兼容性,继续使用NS前缀。由此可见,NS就像我的阑尾一样,都属于历史遗存。


(8) NSString的用法。

@是本体。@符号是Objective-C在标准C语言基础上添加的特性之一。@符号意味着引号内的字符串应作为Cocoa的NSString元素来处理。

一个比较容易犯的错误是将C语言风格的字符串传递给NSLog()函数,这样将得到如下编译错误:



2 使用BOOL的例子

//
//  main.m
//  Hello Objective-C
//
//  Created by gerryyang on 14-10-19.
//  Copyright (c) 2014年 gerryyang. All rights reserved.
//

#import <Foundation/Foundation.h>

BOOL areIntsDifferent (int thing1, int thing2)
{
    if (thing1 == thing2) {
        return NO;
    } else {
        return YES;
    }
}

NSString *boolString(BOOL yesNo)
{
    if (yesNo == NO) {
        return @"NO";
    } else {
        return @"YES";
    }
}

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

    BOOL areTheyDifferent;
    
    areTheyDifferent = areIntsDifferent(5, 5);
    NSLog(@"are %d and %d different? %@", 5, 5, boolString(areTheyDifferent));
    
    areTheyDifferent = areIntsDifferent(23, 42);
    NSLog(@"are %d and %d different? %@", 23, 42, boolString(areTheyDifferent));
    
    
    return 0;
}
/*
output:
2014-10-19 20:44:09.103 Hello Objective-C[20984:303] are 5 and 5 different? NO
2014-10-19 20:44:09.105 Hello Objective-C[20984:303] are 23 and 42 different? YES
Program ended with exit code: 0
*/


参考

[1] Learn Objective-C on the Mac For OS X and iOS (2nd Edition)



Apress, 2009 中文介绍(china-pub)Objective-C是扩展C的面向对象编程语言,也是iPhone开发用到的主要语言。. 本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。附录中还介绍了如何从其他语言过渡到Objective-C。 英文介绍:Take your coding skills to the next level with this extensive guide to Objective–C, the native programming language for developing sophisticated software applications for Mac OS X. Objective–C is a powerful, object–oriented extension of C, making this book the perfect follow–up to Dave Mark’s best–selling Learn C on the Mac, Mac OS X Edition. Whether you’re an experienced C programmer or you’re coming from a different language such as C++ or Java, leading Mac experts Mark Dalrymple and Scott Knaster show you how to harness the powers of Objective–C in your applications! * A complete course on the basics of Objective–C using Apple’s free Xcode tools * An introduction to object–oriented programming * Comprehensive coverage of inheritance, composition, object initialization, categories, protocols, memory management, and organizing source files * A brief tour of Cocoa’s Foundation framework and AppKit * A helpful “learning curve” guide for non–C developers What you’ll learn * Learn Objective–C programming, the gateway to programming your Mac or iPhone. * Write applications for the Mac OS X interface, the cleanest user–interface around. * Understand variables and how to design your own data structures. * Work with the file system. * Connect to data sources and the Internet. Who is this book for? For anyone wanting to learn to program native applications in Mac OS X, including developers new to the Mac, developers new to Objective–C, or students entirely new to programming.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值