OC入门第一课

hello.m(implementation)  hello.c

#import <Foundation/Foundation.h>  引入头文件

#include <F……>

import是include的加强版,预处理只要预处理一次

编译链接:clang hello.m -framework Foundation

(-fobjc-arc 用自动引用计数编译)//终端默认为手动引用计数

(-fno-objc-arc 用手动引用计数编译)

类的声明:只能声明方法和变量(可以用汉字,但一般情况用字母,建议用_开头)

@interface Car : NSObject //Car 继承 NSObject

@end

类的实现:对接口中方法的实现

@implementation Car

//对象销毁时,系统自动调用

(- 实例、成员方法,必须实例调用:car.方法名)/(+ 类方法,类名调用)(返回值类型void)(方法名)dealloc{//类似c++析构函数

NSLog(@"%s",__func__);//__FUNCTION__

//手动引用计数必须调用,自动引用计数不能调用

[super dealloc];

}

@end

/***/

不能用sizeof测量类的大小

Car car;//error

OC的类类型只能用来定义指针//OC所有对象都分配在堆上,所以只能定义指针,不能定义普通类型的变量

Car *car = nil;//初始化,nil表示一个空对象

创建对象(OC分配内存)

Car *car = [Car alloc];//[]表示方法的调用,同c中的malloc

初始化对象

[car init];

//new相当于封装了alloc 及 init

Car *car = [Car new];

释放对象

[car release];

两种引用计数

MRC(manual reference counting手动引用计数)

ARC(automatic reference counting 自动引用计数)

ARC不能使用release及 super dealloc,会自动回收

MRC则要使用

OC中定义的变量,会自动进行初始化

访问权限设置:只能作用于变量之上

默认为受保护:@protected(自己和子类可用)

公共: @public

私有: @private(只能自己使用)

举例:

@private float _h;

char _c;//同上_c是私有变量

_开头的变量的优先级要高于同名但没有下划线的变量

如:_money优先级高于money

/***/函数指针:

typedef void (*Func)();

void y(){

NSLog(@"xxx");

}

Func x(){

return y;

}

x()();//xxx

OC中常见的宏:

__LINE__

下面三个输出打印相同

__FUNCTION__

__PRETTY_FUNCTION__

__func__

OC编码规范的约定:驼峰命名法

类名:首字母大写  CarTest

(实例、成员)变量:  下划线开头 _h

普通变量: f

不同属性的定义:

property//oc特有的规则

attribute//成员变量,物体的属性

OC没有静态成员变量(即不用+开头)

//实例(instance,对象-object)方法,成员方法

- (void) test;

//类方法

+ (void) test;

冒号也是方法名的一部分

- (void)test3;

- (void)test3:(int)a;

- (void):(int)a;

[car test3];

[car test3: 234];

[car : 456];

类函数中不可以修改类中的变量进行操作,而成员函数可以

NNString *_name;//字符串类型,赋值@"";

%@ //NNString 类型输出格式

封装(约定格式)

.h

@interface Car : NSObject

{

@private

int _money;

}

- (void)setMoney:(int)money;

- (int) money;

@end

.m

- (void) print{

NSLog(@"print");

}

- (void) setMoney:(int)money{

_money = money;

[self print];//调用类中的方法

}

- (int) money

{

return _money;

}

main()

{

Car *car = [Car new];

car.money=12;//调用setMoney

NSLog(@"%d",car.money);//调用money

}

继承:实现可重用性

OC支持单继承(只有一个父类)

通过self.变量名访问父类私有变量

多态:同一父类的不同子类可以重载父类的方法,实现不一样的功能

可以用父类的指针指向子类的对象,但子类指针不可以指向父类的对象,根据指针类型而定

collegeStu *stu = [[Student alloc] init];(wrong)

Student *stu1 = [collegeStu new];(right)

总结:大学生一定是学生,但学生不一定是大学生

编译时类型:指针的类型

运行时类型:实际所指向的类型(运行时绑定)

[stu1 release];后要将指针置为空(st1 = nil;)

时间: 2024-08-28 05:47:57

OC入门第一课的相关文章

EasyUI入门第一课

首先下载easyUI,最好是最新的,然后新建一个空web程序或是网站,不废话,代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="JqueryEasyUI.WebForm1" %> <!DOCTYPE html> <html xmlns="http://ww

Spring入门第一课:Spring基础与配置Bean

1.入门 Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心.由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所以极大的简化了我们的开发过程.Spring的核心包括Beans.Core.Context.SpEL.对应的包的文件名形式为spring-expression-4.0.0.RELEASE.jar这样的形式.在进行Spring开发时,我们必须引入这四个核心包和一个日志包,导入Referenced Lib

0x00-Kali Linux 系列入门第一课

Kali Linux介绍篇 Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全和取证方面的相关工具. Kali Linux 是一款非常不错的渗透测试系统,致力于做最优秀的渗透测试分发系统. Kali Linux 历史篇 Kali Linux 下载篇 2013年3月13日Kali Linux 官网发布了第一个版本1.0.0,更详尽的Kali Linu

HTML(入门第一课)

html —— 超文本标记语言 标准的格式 如果出现小的编码错误 系统会自动帮你纠正 htm —— 一些较老的服务器,只有支持后缀为三位 xhtml—— 严格的html 格式 Meta 标签: <meta name="Keywords" content="学生成绩"> 向搜索引擎说明网页的关键字 如果搜索学生成绩 那么就对抓取到这个网页 如果输入其他的则无法搜索到 <meta name="Description" content

JavaScrip 入门第一课

一.代码引入的三种方式 1.直接在head中书写 在head标签里面可以写,在body标签里面也可以写,放到head标签里面和放到body标签里面到底有什么区别,我们后续在讲~ <head> <meta charset="UTF-8"> <title>第一种引入方式</title> <script type="text/javascript"> //javascrip警告语句 alert("我是警

《Php入门第一课》 ---环境搭建

首先,我们一起来认识一下什么是Php,其实PHP就是(Personal home page Hypertext Preprocessor)超文本预处理器,属于一种开源脚本语言,主要适用于Web开发领域.PHP 独特的语法混合了C.Java.Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多:PHP还可以执行

大数据入门第一课 Hadoop基础知识与电商网站日志数据分析

var link="www.marenzy.top"//完整视频资源获取地址,复制链接在浏览器打开 var vx="aishangit666"//如链接失效可添加微信 本课程从Hadoop核心技术入手,以电商项目为依托,带领你从0基础开始上手,逐步掌握大数据核心技术(如:HDFS.YARN.MapReduce以及Hive),并使用这些技术进行实战,最终完成电商行为日志分析项目,让你轻松入门大数据! 物超所值的精品课程,只懂Java基础也能轻松入门大数据 知识覆盖全面

VueJS + TypeScript 入门第一课

楔子 伴随着 Vue 新版本发布对 TypeScript 支持越来越好.当然值得在项目中使用优秀的技术栈. 学习要求背景知识 * NodeJs * NpmJs * VueJS * TypeScript 创建 VueJS - TypeScript 项目 使用官方推荐的脚手架 Vue Cli vue create VueJs-TypeScript // 项目名为 VueJs-TypeScript,另外创建过程中,请选 "Manually select features",后选中 TypeS

Spring入门第一课

今天先不讲Spring是什么. Spring网址:http://projects.spring.io/spring-framework/ Eclipse 安装开发IDE 在Eclipse Marketplace搜索spring,然后直接安装. 下载spring的Jar包 http://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 下载4.3.8的zip包 先直接看代码. 目录结构 代码 applicati