Object-C基础
cocoa
类:
传统的写法:
Demo.h
//
// Demo.h
// demoClass
//
// Created by 王 on 13-12-16.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import <Foundation/Foundation.h> @interface Demo : NSObject
{
int age;
int ide;
NSString *name;
} //初始化方法
-(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name; -(void)setAge:(int)_age; -(int)getAge; -(void)setIde:(int)_ide; -(int)getIde; -(void)setName:(NSString *)_name; -(NSString *)getName; @end
Demo.m
//
// Demo.m
// demoClass
//
// Created by 王 on 13-12-16.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import "Demo.h" @implementation Demo
//初始化方法,只有[super init]初始化父类成功后子类才能初始化
-(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name{
if(self = [super init]){
age = _age;
ide = _ide;
name = _name;
}
return self;
} -(void)setAge:(int)_age{
age = _age;
} -(int)getAge{
return age;
} -(void)setIde:(int)_ide{
ide = _ide;
} -(int)getIde{
return ide;
} -(void)setName:(NSString *)_name{
name = _name;
} -(NSString *)getName{
return name;
} @end
main.m
//
// main.m
// demoClass
//
// Created by 王 on 13-12-10.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Test.h"
#import "Demo.h"
int main(int argc, const char * argv[])
{ @autoreleasepool {
// insert code here...
NSLog(@"Hello, World!"); Demo *d = [[Demo alloc] initWithAge: andIde: andName:@"lily"]; NSLog(@"she is %d,and hers identify is %d,she names %@",[d getAge],[d getIde],[d getName]); }
return ;
}
OC特有的用法(设置器@property和访问器@synthesize)
Demo.h
//
// Demo.h
// demoClass
//
// Created by 王 on 13-12-16.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import <Foundation/Foundation.h> @interface Demo : NSObject
{
int age;
int ide;
NSString *name;
} //初始化方法
-(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name; @property(nonatomic) int age;
@property(nonatomic) int ide;
@property(nonatomic,retain) NSString *name;
@end
Demo.m
//
// Demo.m
// demoClass
//
// Created by 王 on 13-12-16.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import "Demo.h" @implementation Demo
//初始化方法,只有[super init]初始化父类成功后子类才能初始化
-(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name{
if(self = [super init]){
age = _age;
ide = _ide;
name = _name;
}
return self;
} @synthesize age;
@synthesize ide;
@synthesize name; @end
main.m
//
// main.m
// demoClass
//
// Created by 王 on 13-12-10.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Test.h"
#import "Demo.h"
int main(int argc, const char * argv[])
{ @autoreleasepool {
// insert code here...
NSLog(@"Hello, World!"); Demo *d = [[Demo alloc] initWithAge: andIde: andName:@"lily"]; NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]); }
return ;
}
备注:
在@property()得括号中,可以填写的属性有:
readwrite:默认
readonly:只读,意味着没有set方法,只有get方法
assign:默认,引用计数不增加(一般用于基本数据类型,如int)
retain:引用计数增加(一般用于对象方面,如NSString *name)
actomic:默认,原子性
nonatomic:非原子性。是OC中一种线程保护技术,防止在未完成的时候,被另外一个线程使用,造成数据错误。
点语法:(看下面代码即可明白)
//
// main.m
// demoClass
//
// Created by 王 on 13-12-10.
// Copyright (c) 2013年 Bo Li. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Test.h"
#import "Demo.h"
int main(int argc, const char * argv[])
{ @autoreleasepool {
// insert code here...
NSLog(@"Hello, World!"); Demo *d = [[Demo alloc] initWithAge: andIde: andName:@"lily"]; d.age = ;
d.name = @"hhaa"; NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]); }
return ;
}
static关键字:
类体内的全局变量声明。
static int count = ;
要点:
1.声明在任何方法之外;
2.在该文件内;
3.所有位于这条语句之后的方法都可以访问count得值,而其他文件中的方法则不可。
UIKIT
UIView:视图的基础,
UIViewControl:视图控制器的基类,
UIResponder:表示一个可以接收触摸屏上的触摸事件的对象。
窗口(UIWindow):
窗口是视图(UIView)的一个子类。
窗口的主要功能:
1.提供一个区域来显示视图;
2.将事件(event)分发给视图;
注意:一个应用通常只有一个窗口,但是也有例外。
UIScreen:获取硬件设备的屏幕尺寸,在做适配的时候用到,比如iphone的屏幕和ipad的屏幕。
IOS坐标系统:
CGPoint potin = CGPointMake(x,y);//位置
CGSize size = CGSizeMake(w,h);//大小
CGRect rect = CGRectMake(x,y,w,h);//位置和大小。
Frame,Bounds,Center:
Frame:以其父视图为起点,得到他自己的位置信息;
Bounds:以IOS的坐标(0,0)为原点;
Center:表示视图中心点所在位置。
创建视图:
//通过xib的方式来创建视图对象
NSBundle *bundle = [NSBundle mainBundle];
NSArray *arr = [bundle loadNibNamed:@"myView" owner:self options:nil];
UIView *myView = [arr objectAtIndex:]; //通过代码创建视图对象
CGRect viewRect = CGRectMake(, , , );
UIView *myView = [[UIView alloc] initWithFrame:viewRect];
视图调用方法(视图的层次关系):
//基本的添加和删除子视图
addSubview: //添加子视图
insertSubview:atIndex: //视图插入到指定索引位置
insertSubview:aboveSubview: //视图插入指定视图之上
insertSubview:belowSubview: //视图插入指定视图之下
bringSubviewToFront: //把视图移动到最顶层
sendSubviewToBack: //把视图移动到最底层
exchangeSubviewAtIndex:withSubviewAtIndex: //把两个索引对应的视图调换位置
removeFromSuperview: //把视图从父视图中移除
备注:当调用addSubview的时候会对其进行保留,可理解为retain一个对象;
当调用removeFromSuperview的时候会对其进行释放,可理解为release一个对象。
Object-C基础的更多相关文章
- JavaScript对象 Object类型基础
前言 JavaScript 对象是整个语言学习的一个难点.本文主要带大家入门学习Object知识 对象定义 javascript的基本数据类型包括undefined.null.boolean.stri ...
- Object c 基础知识
文件类型说明:.h 头文件,用于定义类.实例变量及类中的方法等定义信息(interface)..m 源文件,定义方法体,可实现objce-c和c方法(implementation)..mm c++源文 ...
- Object -c基础知识(5)--release 之后 retainCount为何为1
在XCode中加入如下代码: UILabel *label=[UILabel alloc]; [label setText:@"TestLabel"]; NSLog(@" ...
- .NET面试题系列[13] - LINQ to Object
.NET面试题系列目录 名言警句 "C# 3.0所有特性的提出都是更好地为LINQ服务的" - Learning Hard LINQ是Language Integrated Que ...
- java语言中Object转为String的几种形式
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...
- C#/.NET 基础学习
初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...
- Java 类型转换以及Object转成其他类型
Object转int int count=(int)map.get("count") int count=Integer.parseInt((String)map.get(&quo ...
- JavaScript 中的Object的使用详解笔记(一)
昨天的学习笔记,今天更新上.第三遍看oop,还是理解的比较到位了. 1.JavaScript的组成:ECMAScript(最新6) + DOM + BOM 2.数组与对象的应用: object的基 ...
- 转!!java中Object转String
Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString ...
- java中Object转String
Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toStri ...
随机推荐
- JS 中document.URL 和 window.location.href 的区别
实际上,document 和 window 这两个对象的区别已经包含了这个问题的答案. document 表示的是一个文档对象,window 表示一个窗口对象. 一个窗口下面可以有很多的documen ...
- Yii 框架创建自己的 web 应用
http://m.baidu.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%400%2Csz%401320_1003%2Cta%40iphone_ ...
- 14、NFC技术:使用Android Beam技术传输文本
Android Beam的基本理念 Android Beam的基本理念就是两部(只能是两部)NFC设备靠近时(一般是背靠背),通过触摸一部NFC设备的屏幕,将数据推向另外一部NFC设备.在传递数据的过 ...
- Win7安装IDL8.0以及破解
参考:http://bbs.06climate.com/forum.php?mod=viewthread&tid=5230 1.下载IDL8.1和证书 下载地址:http://yunpan.c ...
- Fisher information matrix笔记
在看FK论文时,fisher information matrix是必须理解的. 从维基百科查阅到,Fisher information matrix是用利用最大似然函数估计来计算方差矩阵. 来源于: ...
- 浅谈AndroidManifest.xml与R.java及各个目录的作用
在开发Android项目中,AndroidManifest.xml与R.java是自动生成的.但是对于测试来说,非常重要.经过师父的点拨,我对AndroidManifest.xml与R.java有了更 ...
- 使用VMware10虚拟机安装Linux系统(能力工场)
作为IT从业人员,我们经常使用到Linux系统,但是实际开发过程我们通常在Windows平台操作,为了满足工作需要,这个时候我们通常在windows平台安装虚拟机,并在其上建立linux系统,这样就极 ...
- NServiceBus教程-NServiceBus和WCF
WCF中缺少的最主要的事情是发布/订阅,但为什么你必须建立它自己吗?NServiceBus,你把它弄出来. 下一个重要的事情是容错.异常导致WCF代理休息,需要"刷新"的代码,但调 ...
- 怎么监视跟踪一个进程(Process)中的MS Unit Test DLL的详细性能(performance)【asp.net C#】
Sample This tutorial will show how to instrument a unit test DLL for performance profiling. Visual S ...
- dom 动态生产表格
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...