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 ...
随机推荐
- Creole
Home Bisher besucht: AnzeigenAnhängeInfo The Creole 1.0 project has been succ ...
- zend+xdebug单步调试
也允许使用第三方调试工具,今天以PHP教程形式分享如何使用zend studio配置Xdebug来调试PHP程序. 使用Xdebug在zend studio中调试PHP源码之前,请务必安装配置Xdeb ...
- Redis 对String数据类型的操作
Redis的 Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更 ...
- Linux服务部署
1. 构建NTP时间服务器 NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间.互联网的时间服务器也有很多,例 ...
- MapReduce 中job.setJarByClass()方法的疑惑
在调试mr实例的时候,遇到如下的情况,如图所示 说明:就是我的mr程序类名称和我设置的setJarByclass()中设置的不一样,但是程序竟然没有报错!!!!当时把我吓尿了 疑惑:如果这样设置的话, ...
- C++模板详解
参考:C++ 模板详解(一) 模板:对类型进行参数化的工具:通常有两种形式: 函数模板:仅参数类型不同: 类模板: 仅数据成员和成员函数类型不同. 目的:让程序员编写与类型无关的代码. 注意:模板 ...
- PHP时间格式控制符对照表
format 字符 说明 返回值例子 日 --- --- d 月份中的第几天,有前导零的 2 位数字 01 到 31 j 月份中的第几天,没有前导零 1 到 31 S 每月天数后面的英文后缀,2 个字 ...
- 基于mapreduce的大规模连通图寻找算法
基于mapreduce的大规模连通图寻找算法 当我们想要知道哪些账号是一个人的时候往往可以通过业务得到两个账号之间有联系,但是这种联系如何传播呢? 问题 已知每个账号之间的联系 如: A B B C ...
- 《学习OpenCV》练习题第四章第八题ab
这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合. 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedet ...
- tmux的使用方法和个性化配置
介绍 tmux是一个优秀的终端复用软件,即使非正常掉线,也能保证当前的任务运行,这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失!此外,tmux完全使用键盘控制窗口,实现窗口 ...