package com.mct.alarmmanagerdemo;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
public class AlarmActivity extends Activity implements OnClickListener {
private Vibrator vb;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
/* 设置为无标题栏 */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.alarm_activity_layout);
findViewById(R.id.m_close).setOnClickListener(this);
findViewById(R.id.m_delay).setOnClickListener(this);
// 调用震动
vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = { 500, 10, 300, 50 };
// 第一个参数表示震动
vb.vibrate(pattern, 2);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.m_close:
vb.cancel();
finish();
break;
case R.id.m_delay:
vb.cancel();
finish();
break;
}
}
}
NSRange
1)、在Foundation/NSRange.h中对NSRanger的定义
Typedef struct _NSRange{
NSUInteger location;
NSUInteger length;
} NSRange;
//typedef unsigned long NSUInteger
2)、这个结构体用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围。
3)、location表示该范围的起始位置
4)、length表示该范围内所含的元素个数
5)、比如“I love objective-c”中的“obj”可以用location为7,length为3的范围来表示
6)、
列一:
main.m
//
// main.m
// Foundation1 - 结构体
//
// Created by qwz on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
void test(){
//定义了Date这个结构体类型
struct Date{
int year;
int month;
int day;
};
//定义结构变量
struct Date d = {2013, 4, 5};
d.day = 6;
}
void test1(){
typedefstruct Date{
int year;
int month;
int day;
} myDate;
myDate d = {2013, 4, 5};
}
void range(){
NSRange range = NSMakeRange(8, 10);
NSLog(@"location:%zi", range.location);
NSLog(@"length:%zi", range.length);
NSString *str = NSStringFromRange(range);
NSLog(@"%@", str);
//NSLog(@"%@", range); 错误做法,%@代表着OC对象
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
range();
}
return 0;
}
运行结果:
2013-12-11 09:37:48.757 OC10-内存管理2-set方法的内存管理[319:403] location:8
2013-12-11 09:37:48.762 OC10-内存管理2-set方法的内存管理[319:403] length:10
2013-12-11 09:37:48.763 OC10-内存管理2-set方法的内存管理[319:403] {8, 10}
NSPoint
1)、在Foundation/NSGeometry.h中对NSPoint的定义 typedef CGPoint NSPoint;
2)、在CoreGraphics/CGGeometry.h中对CGPoint的相关定义
Struct CGPoint{
CGFloat x;
CGFloat y;
};
Typedef struct CGPoint CGPoint;
// #define CGFLOAT_TYPE double
// typedef CGFLOAT_TYPE CGFloat;
3)、NSPoint 和 CGPoint是等价的
4)、这个结构体代表的是平面中的一个点(x, y)
列二:
main.m
//
// main.m
// Foundation1 - 结构体
//
// Created by qwz on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
void point(){
//NSPoint p;
CGPoint p;
p.x = 1;
p.y = 10;
p = NSMakePoint(10, 9);
//常见的方式
p = CGPointMake(8, 9);
NSString *str = NSStringFromPoint(p);
NSLog(@"%@", str);
}
int main(int argc, const char * argv[])
{
@autoreleasepool
point();
}
return 0;
}
NSSize
1)、在Foundation/NSGeometry.h中对NSSize的定义 typedef CGSize NSSize;
2)、在CoreGraphics/CGGeometry.h中对CGSize的相关定义
3)、这个结构体用来存储宽度和高度
4)、可以利用NSMakeSize()和CGSizeMake()创建CGSize
例三:
main.m
//
// main.m
// Foundation1 - 结构体
//
// Created by qwz on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
void size(){
NSSize size;
size.width = 100;
size.height = 90;
size = NSMakeSize(90, 80);
size = CGSizeMake(10, 8);
NSString *str = NSStringFromSize(size);
NSLog(@"%@", str);
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
size();
}
return 0;
}
NSRect
1) 在Foundation/NSGeometry.h中对NSRect的定义 typedef CGRect NSRect;
2) 在CoreGraphics/CGGeometry.h中对CGRect的相关定义
Struct CGRect{
CGPoint origin; //矩形左上角坐标
CGSize size; //矩形的宽度和高度
};
typedef struct CGRect CGRect;
3) 这个结构体用来存储宽度和高度
4)可以利用NSMakeRect() 和 CGRectMake() 创建CGRect
main.m
//
// main.m
// Foundation1 - 结构体
//
// Created by qwz on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
void rect(){
NSRect rect; // CGRect rect;
rect.origin.x = 10;
rect.origin.y = 11;
rect.size.width = 100;
rect.size.height = 90;
rect = NSMakeRect(10, 10, 80, 80);
rect = CGRectMake(8, 9, 10, 12);
NSString *str = NSStringFromRect(rect);
NSLog(@"%@", str);
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
rect();
}
return 0;
}
4.4OC10-内存管理2-set方法的内存管理
例一:
main.m
//// main.m
// OC10-内存管理2-set方法的内存管理
//
// Created by qwz on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Book.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *stu = [[Student alloc] initWithAge:29];
Book *book = [[Book alloc] initWithPrice:3.5];
[book release];
[stu release];
}
return 0;
}
Student.h
//// Student.h
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Book.h"
@interface Student : NSObject
@propertyint age;
- (id)initWithAge:(int)age;
@propertyBook *book;
@end
// Student.m
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Student.h"
@implementation Student
#pragma mark 构造方法
- (id)initWithAge:(int)age{
if( self = [super init]){
_age = age;
}
returnself;
}
#pragma mark 回收对象
- (void)dealloc{
NSLog(@"student:%i 被销毁了", _age);
[super release];
}
@end
// Book.h
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Book : NSObject
@propertyfloat price; //价格
- (id)initWithPrice:(float)price;
@end
// Book.m
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Book.h"
@implementation Book
- (id)initWithPrice:(float)price{
if (self = [super init]){
_price = price;
}
returnself;
}
- (void)dealloc{
NSLog(@"book:%f 被销毁了", _price);
[super dealloc];
}
@end
运行结果
2013-12-09 17:04:29.679 OC10-内存管理2-set方法的内存管理[634:403] book:3.500000 被销毁了
2013-12-09 17:04:29.703 OC10-内存管理2-set方法的内存管理[634:403] student:29 被销毁了
//
// main.m
// OC10-内存管理2-set方法的内存管理
//
// Created by qwz on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Book.h"
void test(Student *stu){
//book:1
Book *book = [[Book alloc] initWithPrice:3.5];
//book:2
stu.book = book;
//book:1
[book release];
Book *book2 = [[Book alloc] initWithPrice:4.5];
//book2:2
stu.book = book2;
//book2:1
[book2 release];
}
void test1(Student *stu){
[stu readBook];
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
//stu:1
Student *stu = [[Student alloc] initWithAge:29];
//stu:1
//book:1
//book2:1
test(stu);
//stu:1
//book:1
//book2:1
test1(stu);
//stu:0
//book:0
[stu release];
}
return 0;
}
Student.h
//
// Student.h
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Book.h"
@interface Student : NSObject{
Book *_book;
}
@propertyint age;
- (id)initWithAge:(int)age;
@propertyBook *book;
- (void)readBook;
@end
Student.m
//
// Student.m
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Student.h"
@implementation Student
#pragma mark 构造方法
- (id)initWithAge:(int)age{
if( self = [super init]){
_age = age;
}
returnself;
}
#pragma mark 回收对象
- (void)dealloc{
//释放对象
[_book release];
//[self.book release];
NSLog(@"student:%i 被销毁了", _age);
[super dealloc];
}
#pragma mark - getter和setter方法
//@synthesize book = _book;
//如果自己手动实现了getter和setter,xcode就不会自动生成@synthesize
//也就不会自动生成_book
//getter和setter的默认实现
- (void)setBook:(Book *)book{
if(_book != book){
//先释放旧的成员变量
[_book release];
//在retain新传进来的对象
_book = [book retain];
}
}
- (Book *)book{
return _book;
}
#pragma mark - 公共方法
#pragma mark 读书
- (void)readBook{
NSLog(@"当前读的书是:%f", _book.price);
}
@end
Book.h
//
// Book.h
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Book : NSObject
@propertyfloat price; //价格
- (id)initWithPrice:(float)price;
@end
Book.m
//
// Book.m
// OC10-内存管理2-set方法的内存管理
//
// Created by liuyes on 13-12-9.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Book.h"
@implementation Book
- (id)initWithPrice:(float)price{
if (self = [super init]){
_price = price;
}
returnself;
}
- (void)dealloc{
NSLog(@"book:%f 被销毁了", _price);
[super dealloc];
}
@end