oc中的类学习笔记1
1.oc中的类和构造方法
NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init];
NSAutoreleasePool是一个类,alloc相当于c++或者java中的new(为对象分配空间),init相当于java或者c++中的构造方法,对应的都要使用[]括起来。
2.NSLog(@"Hello,World!");
类似于printf,格式化输出
@+“字符串”=NSString*对象,为oc的字符串常量(这个地方有点不理解)
3 oc函数(方法)调用的方式:
[类名 方法名]; //类方法(大致相当于静态成员函数,也就是java中的public和static修饰的方法)
eg.+(void)fun;先不管别的,说这个+号,说明是类方法
[对象名 方法名];//实例方法(这个和java中的通用方法一样)
eg.-(void)fun;先不管别的,说这个+号,说明是对象方法
4.%@ object输出对象,调用对象的description方法
5.NSString * str = @"Hello World";
NSString是一个oc对应的string类
在oc中大部分的对象都要分配到堆上,用指针来指向,@用来表示一个字符创常量
NSNumber * num =[NSNumber numberWithInt:100];
上面这行[NSNumber numberWithInt:100]中和前面说明的相照的话,会发现这个是类方法,NSNumber是一个类,numberWithInt是一个方法,并且是静态的方法,后面的100是参数,有几个参数就有几个冒号,对应的形式为:[类名 方法名:参数];
6.如下一段代码
NSLog(@"NSNumber:%@",num);这一行不用分析,就是NSNumber是一个类
AddressCard * card = [[AddressCard alloc]initWithName:@"Tom" andEmail:@"Tom@gail.com"];
NSLog(@"AddressCard:%@",card);
[card release];
第二行的[AddressCard alloc]不用分析了,1中已经讲解了
initWithName:@"Tom" andEmail:@"Tom@gail.com"这一部分也和1中的构造方法类似,其中@"Tom"是第一个参数,andEmail:@"Tom@gail.com"是第二个参数,andEmail视频上讲解时说是后面@"Tom@gail.com"这个参数的别名,有点不是很理解,先记在这里,一会慢慢理解吧
(后面又讲到Email是@"Tom@gail.com"的名字,Name是@"Tom"的名字)
[card release];这行代码中release和前面的alloc相对应,一个分配,一个释放
7.
NSInteger intValue2 = -999;
在oc中以NS开头的一般都是认为是对象,分配在堆上,并且使用指针来指向,不过这个地方的Integer有点特殊,它实际上就是一个int
8.
unichar pUnichar[] = {L'你',L'好',0x0000};
声明一个unicode编码格式的变量,L表示unicode,最后的0x0000相当于字符串的结束标志'\0'
对应的打印语句如下:
NSLog(@"C string(unichar):%S",pUnichar);
unicode编码的字符串使用%S来进行输出
9.静态全局变量
static int sum=5;静态全局变量
oc不支持静态成员变量,通过静态全局变量来实现静态成员变量的功能
(这个地方我不是很理解,静态全局变量,难道静态全局变量能写在类外面么?)
10.@property(nonatomic) int radius;
这句就实现了对int radius属性对应的setter和getter方法(ob自己自动实现的),其中nonatomic意思是不适用线程。对应的.h和.c内容如下
Circle.h
#import <Foundation/Foundation.h> @interface Circle:NSObject{
int radius;
}
@property(nonatomic) int radius;
-(void)print;
@end Circle.m
#import "Circle.h" @implementation CirCle
@sythesize radius;
-(void)print{
NSLog(@"radius:%d",radius);
} main.m
#inport <Foudation/Foudation.h>
#import "Circle.h" int main(int argc,const char *argv[]){
Circle *circle =[[Circle alloc]init];
[cicle print];
[cicle release];
}
oc中的类学习笔记1的更多相关文章
- java中String类学习笔记
1.String的两种实例化方式 String str="hello";//直接赋值的方式: String str=new String("hello");// ...
- System类学习笔记
最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...
- zt C++ list 类学习笔记
C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...
- Scala中的类学习
Scala中的类学习 从java了解类的情况下,了解Scala的类并不难.Scala类中的字段自动带getter和setter方法,用@BeanProperty注解生成javaBean对象的getXX ...
- ES6中Map数据结构学习笔记
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...
- JavaSE中Map框架学习笔记
前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...
- GUI学习之五——QAbstractButton类学习笔记
今天总结一下AbstractButton类的学习笔记. 一.描述 AbstractButton是对各种按键的抽象类他的继承关系是这样的 首先,QAbstractButton继承了QWidget类的各种 ...
- C++中的ravalue学习笔记
一.学习笔记 1. A a = 42; 会先以42为参数构造一个A类对象,然后调用拷贝构造函数来构造a,目前编译器优化掉了拷贝构造函数的调用,测试拷贝构造函数是没有被调用的,但是其权限不能为priva ...
- 我的Android进阶之旅------>Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
随机推荐
- Keepalived+MySQL双主
一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...
- android:process为耗资源操作指定一个新进程
当有一些耗费内存比较多的操作时,可以通过android:process指定一个新的进程.保证程序运行. 例如: 一个后台长期运行的service: <service android:name=& ...
- 【HDOJ】1508 Alphacode
简单DP.考虑10.20(出现0只能唯一组合).01(不成立). /* 1508 */ #include <iostream> #include <string> #inclu ...
- bzoj1976
终于忙完期末考试了,即将进入愉快的暑假(虽然暑假作业奇多,但好歹终于能有大量时间刷题了) 先把上次新一类最小割留下的一道题目A了复习一下: 题目看起来很复杂,实际上和bzoj2132是同一个类型的 用 ...
- 【转】Java 类的生命周期详解
一. 引 言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大 ...
- MVC3中Action返回类型ActionResult类型
MVC3中Action返回类型ActionResult在System.Web.Mvc命名空间中.这些包含在控制器中的方法,我们称为控制器中的 Action,比如:HomeController 中的 I ...
- BrnShop开源网上商城第三讲:插件的工作机制
这几天BrnShop的开发工作比较多,所以这一篇文章来的晚了一些,还请大家见谅呀!还有通知大家一下BrnShop1.0.312版本已经发布,此版本添加了报表统计等新功能,需要源码的园友可以点此下载.好 ...
- Java Socket 异常 Connection reset
最近使用Java做Socket客户端,与C的Socket服务端交互.遇到问题:现象是可以从服务端接受小数据,但是如果接受大数据,总是遇到Connection reset的异常:如果把服务端和客户端放到 ...
- MySql定位执行效率较低的SQL语句
MySQL能够记录执行时间超过参数 long_query_time 设置值的SQL语句,默认是不记录的. 获得初始锁定的时间不算作执行时间.mysqld在SQL执行完和所有的锁都被释放后才写入日志.且 ...
- 配置Memcache服务器并实现主从复制功能(repcached)(转)
1.repcached介绍repcached 是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的 master/slave都是可读写的,而且可以相互同步 ...