Objective-C]入门 (xcode helloworld程序 创建类
一:objective-c简介
二、第一个Objective-c程序
启动 Xcode。初次启动的时候,也许会弹出一个“Welcometo Xcode”的一个对话框,我们可以把它关掉。
然后是选择屏幕上部菜单的“File->New Project”,出现了一个让你选择项目种类的对话框。你需要在对话框的左边选择“CommandLineUtility” ,然后在右边选择“FoundationTool”,然后选择“Choose...”按钮。输入项目名称“hello world",然后选择save as
- #import<Foundation/Foundation.h>
- int main (int argc, constchar * argv[])
- {
- NSAutoreleasePool * pool = [[NSAutoreleasePoolalloc] init];
- //----------------------------------------
- NSLog(@"Hello,iphone!");
- //----------------------------------------
- [pool drain];
- return 0;
- }
---------------------------------------------------------------------
#import<Foundation/Foundation.h>
//可以理解为在内存中开辟了一块共用的内存空间
内存管理在IOS开发中的非常重要的
[pool drain];
//释放共用的内存空间
NSLog(@"Hello,iphone!");
NSLog是Objective-C库中的一个函数
作用:向控制台输出文本内容
将显示常量字符串,类似于printf函数,并且它会自动在文本后面添加'n'。当然其中也可以使用转义字符。例如还有:
NSLog(@"The sum of 50 and 25 is %i",sum);
//----------------------------------------
三、定义一个新类:
选择File文件里New一个File文件,在打开的对话框里,选择objective-c class;输入类名为Test:
它会自动生成Test.h,Test.m文件:.h是头文件,.m是objective-c的源文件;
首先是test.h头文件代码如下:
- #import <Foundation/Foundation.h>
- @interface Test : NSObject
- @end
---------------------------------------------------------------------
然后是test.m源文件代码如下:
- #import "Test.h"
- @implementation test
- @end
---------------------------------------------------------------------
@interface部分
描述类、类的数据成分以及类的方法
@的是指令符
@implementation部分
实现这些方法的实际代码
@interface部分的一般格式:
@interface NewClassName : ParentClassName{
memberDeclarations;}
methoddeclarations;
@end
@implementation部分的一般格式:
@implementation NewClassName
methodDefinitions;
@end
它是以@interface开始,以@end结束!!!!@implementation也是这样,以@end结束!!!;
类的命名规则:以字母或下划线开头,之后可以是任何字母,下划线或者0~9数字组合,类名以大写字母开头,实例变量、对象以及方法的名称以小写字母开始 ;
这就是创建类;
四、声明定义变量及方法
Test.h
- @interface Test : NSObject{//属性必须定义在这个大括号里
- int intX;
- int intY;
- }
- +(int) staticIntY;//属于类,不属于对象
- -(void) print;//无参方法
- -(void) setIntX:(int)n;//带一个参数的方法
- -(void) setIntY:(int)d;
- -(void) setIntX:(int)n andSetIntY:(int)d;//多输入参数的方法
- -(int) intX;//get方法
- -(int) intY;
- @end
---------------------------------------------------------------------
函数开头的(-)号或者(+)号表示:
(-) 该方法是实例方法(对类的特定实例执行一些操作) ;(+)是类方法(即对类本身执行某些操作的方法,例如创建类的新实例)
函数的声明示例:
-(void)setNumerator:(int)n第一个表示方法类型,返回类型,接着是方法名,方法接受的参数,参数类型,参数名
注:如果不带参数则不用使用“:”号,从程序中可以看出来
如果没有指定任何返回类型, 那么默认是id类型, 所有的输入参数默认也是id类型 (id类型可用来引用
任何类型的对象) 。
有多个参数的方法:
-/+ (return type) function_name : (parameter type) parameter1 otherParameter : (parameter_type) parameter2;
如果只有一个参数,在: 后面声明参数的类型和名称;如果有多个参数的话,每个参数前面都要有一个:, 然后接着是参数类型和参数名称。可是
Test.m文件
- @implementation Test
- +(int)staticIntY{
- Y+=1;
- return Y;
- }
- -(void)print{
- NSLog(@"两个数相加 的结果 为:%i",intX+intY);
- }
- -(void)setIntX:(int)n{
- intX=n;
- }
- -(void)setIntY:(int)d{
- intY=d;
- }
- -(void) setIntX:(int)n andSetIntY:(int)d{
- intX=n;
- intY=d;
- }
- -(int)intX{
- return intX;
- }
- -(int)intY{
- return intY;
- }
- @end
---------------------------------------------------------------------
这个实现类没有什么好说的,相信大家都能看懂,就只是实现方法;
然后就是在main.m文件里测试了:
- Test *test=[[Test alloc]init];//对象的声明 和初始化,其中alloc为对象 申请了内存空间,init则完成 了对象 的初始化。在完成 了对象 声明 和初始化以后,就可以调用对象 的方法了。
- [test setIntX:1];//方法调用
- [test setIntY:1];
- [test print];//无参调用
- [test setIntX:2 andSetIntY:2];//多参方法调用
- [test print];
---------------------------------------------------------------------
创建一个Test对象:
Test *test=[[Test alloc]init];
一定要注意在数据 类型的右边有一个星号。所有的objective-c对象变量都是指针类型的。等号右边的语句是创建 一个对象 ,这是一个嵌套 的方法调用。第一个调用的是Test的alloc方法。这是一个相对对比较 底层的调用 ,因为该方法其实是为test变量申请一个内容 空间,第二个调用的是新创建 对象 的init方法,这个init方法用于初始化变量值。init实现了比较常用的设置,比如设置实例变量的初始值。
后面两句是调用方法:
【对象名 方法名:实参】;有参调用,如果是无参的就没有冒号及后面的,如果是多参的:【对象名 方法名:实参方法名:实参】。
注:创建一个新对象,都要请求分配内存,在完成对该对象的操作时,必须释放其所用的内存空间
i Phone平台不支持垃圾回收机制外部要访问实例变量需要通过类的方法来检索其值,不能直接访问
在Objective-C当中,所有的对象都可以使用id来进行区分。我们知道一个类仅仅是一些数据外加上操作这些数据的代码 ,所以id实际上是指向数据结构的一个指针而已,相当于void*。
总结一下对象声明的语法:
类名 *test,*test1;
定义 了test和test1是指定类的对象。要注意的是,这只是定义了一个指针变量,尚未为它所包含的数据获得内存空间。在调用alloc方法之后,这些对象 才获得(分配)空间。
输出结果为:
2012-03-24 11:24:00.522 HelloWorld[652:707]两个数相加的结果为:2
2012-03-24 11:24:00.612 HelloWorld[652:707]两个数相加的结果为:4
Objective-C]入门 (xcode helloworld程序 创建类的更多相关文章
- 微信小程序入门笔记-小程序创建(2)
1.工具下载 官方链接:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 我选用的是稳定版 macOS 2 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- Helloworld程序的创建以及配置文件的讲解
创建项目. create Project 选择创建的Project类别以及使用的SDK,可能SDK需要配置或者修改配置. 这个页面是问你是否使用模板创建. Command Line App 会自动创建 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)
实验平台:win7,VS2010 先上结果截图: 文章最后附有生成该图的程序. 1. 刚体模拟原理 Bullet作为一个物理引擎,其任务就是刚体模拟(还有可变形体模拟).刚体模拟,就是要计算预测物体的 ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序 ...
- 对类HelloWorld程序中添加一个MessageBox弹窗
对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以 ...
- Windows Azure入门教学系列 (一): 创建第一个WebRole程序
原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...
- Node.js入门以及第一个helloworld程序
1.概念:简单的说 Node.js 就是运行在服务端的 JavaScript.学之前需要明白Node.js是无法挑战jsp.php或者asp这种老牌网站的地位的,是永远不会出现在证券.金融这种领域的. ...
随机推荐
- c basic library framework - simplec 2.0.0
前言 - simplec 单元测试 流程介绍 一个关于C基础库 simplec 2.0.0 发布了. 详细的文档介绍请参照 README.md. 说的再多都无用, 抵不上 gdb 一个 b r n. ...
- SRM 739 Div.2
250 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostre ...
- jps命令学习
jps命令学习 标签(空格分隔): jvm jps介绍 ( JVM Process Status Tool ) 网文 jps命令用于查看当前Java进程及其pid等相关信息,同ps -ef | gre ...
- “无法识别的配置节system.webServer”解决办法
在Winsows 2008 Server 上安装asp.net 1.1 的应用程序,在启用默认文档或者浏览目录时会向 web.config 文件添加 <system.webServer> ...
- BZOJ 1901: Zju2112 Dynamic Rankings 区间k大 带修改 在线 线段树套平衡树
之前写线段树套splay数组版..写了6.2k..然后弃疗了.现在发现还是很水的..嘎嘎.. zju过不了,超时. upd:才发现zju是多组数据..TLE一版才发现.然后改了,MLE...手写内存池 ...
- MSSQL为单独数据库创建登录账户
如果要为一个数据库创建一个独立的账号需要这个数据库为包含数据库 当前(非包含)的数据库所面临的问题在描述什么是包含数据库之前,先了解一下为什么会出现包含数据库.当前的数据库有一些问题,如下:1.在数据 ...
- js正则表达大合集【转载自:http://caibaojian.com】
[注明原文链接吧]:http://caibaojian.com 1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4 ...
- oracle 11g安装教程
oracle 11g安装教程 第1步 第2步 第3步 第4步 第5步 第6步 第7步 第8步 第9步 第10步 第11步 第12步 第13步 第14步 第15步 第16步 第17步 第18步 第19步 ...
- Java基于数据源的数据库访问
☞ 概述 最早接触的Java访问数据库,是通过jdbc接口.后来工作之后,一般是在服务器(如weblogic)配置数据源,通过JNDI使用数据源:最近需要在程序中动态构造数据源,查了些资料,备录于此. ...
- Flask实战第61天:帖子板块过滤显示
先在显示的帖子是所有版块的帖子,这节我们来完成点击某个版块,则显示此版块的帖子 要完成这个功能,我们需要在前端传递板块的id到后台, 编辑front_index.html 编辑首页视图 编辑板块选中样 ...