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基础的更多相关文章

  1. JavaScript对象 Object类型基础

    前言 JavaScript 对象是整个语言学习的一个难点.本文主要带大家入门学习Object知识 对象定义 javascript的基本数据类型包括undefined.null.boolean.stri ...

  2. Object c 基础知识

    文件类型说明:.h 头文件,用于定义类.实例变量及类中的方法等定义信息(interface)..m 源文件,定义方法体,可实现objce-c和c方法(implementation)..mm c++源文 ...

  3. Object -c基础知识(5)--release 之后 retainCount为何为1

    在XCode中加入如下代码:  UILabel *label=[UILabel alloc]; [label setText:@"TestLabel"]; NSLog(@" ...

  4. .NET面试题系列[13] - LINQ to Object

    .NET面试题系列目录 名言警句 "C# 3.0所有特性的提出都是更好地为LINQ服务的" - Learning Hard LINQ是Language Integrated Que ...

  5. java语言中Object转为String的几种形式

    在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...

  6. C#/.NET 基础学习

    初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...

  7. Java 类型转换以及Object转成其他类型

    Object转int int count=(int)map.get("count") int count=Integer.parseInt((String)map.get(&quo ...

  8. JavaScript 中的Object的使用详解笔记(一)

    昨天的学习笔记,今天更新上.第三遍看oop,还是理解的比较到位了.   1.JavaScript的组成:ECMAScript(最新6) + DOM + BOM 2.数组与对象的应用: object的基 ...

  9. 转!!java中Object转String

    Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString ...

  10. java中Object转String

      Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toStri ...

随机推荐

  1. Sde表结构分析

    原文 Sde表结构分析 今天开始想分析一下sde的表结构,希望能够弄明白sde一个要素类的每个Feature是如何存储的. 弄ArcSDE的人都知道,ArcSDE内一个要素类在关系数据库(以MS SQ ...

  2. sessionFactory.getCurrentSession()的引出

    当业务逻辑中需要开启事务执行,业务逻辑也要调用底层操作数据库的函数,那函数也要开启事务操作. 如果用sessionFactory.openSession()的话会引起处理不在同一个事务中,会造成出错. ...

  3. DOS攻击和DDOS攻击有啥区别啊

    DDOS是DOS攻击中的一种方法. DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务. ...

  4. java jxl 向Excel中追加数据而不覆盖原来数据的例子

    向先原来就有数据的Excel写数据是不会覆盖原有的数据,只是在追加数据. public class Excel {     public Excel() {     }     public void ...

  5. selenium python (十五)控制滚动条操作

    #!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #一般用到操作滚动条的两个场景    #注册时的法律条文的阅读,判断用户 ...

  6. ansible命令执行模块使用

    ansible命令执行模块使用 1.命令执行模块-command 在远程节点上运行命令. 命令模块使用命令名称,接上空格-的分割符作为参数使用,但是不支持管道符和变量等,如果要使用这些,那么可以使用s ...

  7. 自己使用python webob,paste.deploy,wsgi总结

    paste.deploy就是一个可以配置wsgi_app的工具,可以让服务器运行时,按照配置文件执行一系列的程序.需要使用.ini配置文件. (1)这里补充一下当时没看到的配置文件 1.[app:ma ...

  8. Firefox 对条件判断语句块内的函数声明的处理与其他浏览器有差异

    标准参考 函数声明和函数表达式 定义一个函数有两种途径:函数声明和函数表达式. 函数声明: function Identifier ( FormalParameterList opt ) { Func ...

  9. iOS优秀博客收录(持续更新)

    唐巧 王巍 破船之家 NSHipster Limboy 无网不剩 念茜的博客 Xcode Dev Ted’s Homepage txx’s blog KEVIN BLOG 阿毛的蛋疼地 亚庆的 Blo ...

  10. 两个实用的Python的装饰器

    两个实用的Python的装饰器 超时函数 这个函数的作用在于可以给任意可能会hang住的函数添加超时功能,这个功能在编写外部API调用 .网络爬虫.数据库查询的时候特别有用 timeout装饰器的代码 ...