当前位置:  编程技术>移动开发
本页文章导读:
    ▪@dynamic 跟@synthesize区别,@encode        @dynamic 和@synthesize区别,@encode   @dynamic 是相对于 @synthesize的,它们用样用于修饰 @property,用于生成对应的的getter和setter方法。但是@ dynamic表示这个成员变量的getter和setter方法并不是直接由.........
    ▪ 链表的创办,添加,排序,输出的简单例子        链表的创建,添加,排序,输出的简单例子 #import <Foundation/Foundation.h>#include <stdio.h>typedef struct node{ int data; struct node *next;}List;//定义一个int类型的结构体,名字为ListList *insert(List .........
    ▪ UIApplicationDelegate分析总结       UIApplicationDelegate分析小结 我们开发出来的运行在iOS平台上的应用程序都有一个UIApplication类的对象。 1、是iOS应用程序的起始点,并负责初始化和显示UIWindow; 2、负责加载应用程序的第一个U.........

[1]@dynamic 跟@synthesize区别,@encode
    来源: 互联网  发布时间: 2014-02-18
@dynamic 和@synthesize区别,@encode

 

@dynamic 是相对于 @synthesize的,它们用样用于修饰 @property,用于生成对应的的getter和setter方法。但是@ dynamic表示这个成员变量的getter和setter方法并不是直接由编译器生成,而是手工生成或者运行时生成。示例如下:
@implementation ClassName
@synthesize aProperty, bProperty;
@synthesize cProperty=instanceVariableName;
@dynamic anotherProperty;

// method implementations
@end

@encode 是用于表示一个类型的字符串,对此,苹果有专门的介绍文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html 

示例代码如下:

-(void) aMethod
{
    char *enc1 = @encode(int);                 // enc1 = "i"
    char *enc2 = @encode(id);                  // enc2 = "@"
    char *enc3 = @encode(@selector(aMethod));  // enc3 = ":"

    // practical example:
    CGRect rect = CGRectMake(0, 0, 100, 100);
    NSValue *v = [NSValue value:&rect withObjCType:@encode(CGRect)];
}


    
[2] 链表的创办,添加,排序,输出的简单例子
    来源: 互联网  发布时间: 2014-02-18
链表的创建,添加,排序,输出的简单例子
#import <Foundation/Foundation.h>
#include <stdio.h>

typedef struct node
{
int data;
struct node *next;
}List;//定义一个int类型的结构体,名字为List

List *insert(List *p,List *q);//插入函数,,p新元素插入位置,q 新元素中的数据域内容
List *create(void);//创建函数。
void print(List *head);//打印函数。

List *insert(List *p,List *q)//插入函数
{
List *k,*t;
t=p;
while(t!=NULL)
{
        if(t->data>q->data)break;
        k=t;
        t=t->next;
}
q->next=k->next;
k->next=q;
return p;//p保持是最小的数。p 其实是整个链表。
}

List *create(void)
{
int i=0;
List *head,*p,*q;//p 为链表的元素,q为链表的尾。
head=(List *)malloc(sizeof(List));
q=p=(List *)malloc(sizeof(List));
scanf("%d",&q->data);
q->next=NULL;
while(q->data!=0)//判断尾是否为0;
{
        i++;
        if(i==1)
            head->next=p;
        else
        {
            if(q->data<p->data)//小于的时候使用头插法
            {
                q->next=p;
                head->next=q;
                p=q;
            }
            else p=insert(p,q);//大于的时候使用插入函数
        }
        q=(List *)malloc(sizeof(List));//每次添加一个尾,就新开辟一个新尾的空间。
        scanf("%d",&q->data);
}
return head;
}


void print(List *head)
{
List *p;
p=head->next;
while(p!=NULL)
{
        printf("%d ",p->data);//P对象的元素值。
        p=p->next;//把元素的值赋为下个元素的值。
}
}


int main (int argc, const char * argv[])
{

    @autoreleasepool {
       
        int x;
        List *head,*p;
        printf("请向链表中输入数值,按0结束:\n");
        head=create();
        printf("得到的链表为:\n") ;
        print(head);
        printf("\n");
        printf("请输入一个数值,插入到链表中:\n");
        scanf("%d",&x);
        p=(List *)malloc(sizeof(List));
        p->data=x;
        head=insert(head,p);
        printf("插入数值后的链表为:\n");
        print(head);
           
    }
    return 0;
}

    
[3] UIApplicationDelegate分析总结
    来源: 互联网  发布时间: 2014-02-18
UIApplicationDelegate分析小结

我们开发出来的运行在iOS平台上的应用程序都有一个UIApplication类的对象。
1、是iOS应用程序的起始点,并负责初始化和显示UIWindow;
2、负责加载应用程序的第一个UIView到UIWindow中;
3、帮助管理应用程序的生命周期;
4、接收事件,再转给它的委托"UIApplicationDelegate"来处理;此委托可处理的事件包括:应用程序的生命周期事件如程序启动和关闭、系统事件如来电和记事项警告;

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1742950 )

虽然UIApplication负责接收事件,但它无需我们来修改。而它的负责处理事件的委托类,其遵循UIApplicationDelegate协议,是需要我们进行开发。

例如
应用BirdsApp的委托类的声明如下:
@interface BirdsAppDelegate : UIResponder <UIApplicationDelegate>

这个类需要实现UIApplicationDelegate协议中的方法,用于处理UIApplication接收的事件。
这些方法有很多,大概是这些:
1、应用完成登录的事件处理方法;
2、应用中断的事件处理方法;
3、内存很低的事件处理方法;
4、重要改变发生的事件处理方法;

在开发时,我们需实现的最重要的方法是application:didFinishLaunchingWithOptions:,其他方法也应该去实现,虽然它们都是可选的。

在XCode4.5版中,如果使用它的模板创建项目,Xcode将会为我们创建遵守UIApplicationDelegate协议的方法,这些方法的实现代码需要我们自己去开发。

例如,创建一个名称为BirdsApp的项目,XCode会自动创建BirdsAppDelegate.h和BirdsAppDelegate.m文件。

/*BirdsAppDelegate 应用委托类*/

#import <UIKit/UIKit.h>
@class BirdSightingDataController;
@class BirdsMasterViewController;
@interface BirdsAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) BirdSightingDataController *dataController;
@property (strong, nonatomic) BirdsMasterViewController *firstViewController;
@end

#import "BirdsAppDelegate.h"
#import "BirdSightingDataController.h"
#import "BirdsMasterViewController.h"
@implementation BirdsAppDelegate
@synthesize window = _window, dataController = _dataController, firstViewController= _firstViewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
BirdsMasterViewController *firstViewController = (BirdsMasterViewController *)[[navigationController viewControllers] objectAtIndex:0];
BirdSightingDataController *aDataController = [[BirdSightingDataController alloc] init];
firstViewController.dataController = aDataController;
self.dataController = aDataController;

return YES;
}
@end

 
建立在storyboard基础上的应用程序,作为UIApplication类的对象,在启动过程中将进行下列操作。
首先,加载info.plist文件内容到一个NSDictionary对象中,读取字典对象的键UIMainStoryboardFile对应的值得到storyboard配置文件名称,通常文件名称会是MainStoryboard.storyboard。
其次,加载MainStoryboard.storyboard文件,根据文件中记录的第一个视图控制器的值,自动实例化该控制器。该控制器称为主视图控制器。
再次,将主视图控制器的所有的视图使用addSubView方法加载到UIWindow对象中去。

这个时间点,算是完成应用启动,调用应用委托类中的application:didFinishLaunchingWithOptions:的方法。


而以前的应用程序用Interface Builder开发,使用nib管理视图,那么必须在应用委托类中实现加载主视图控制器的所有视图和实例化UIWindow对象的操作。

#import <UIKit/UIKit.h>

@interface GuessChildAppDelegate : NSObject <UIApplicationDelegate> {
  UIWindow *window;
    UINavigationController* simple_;
}

@property (nonatomic, retain)  UIWindow *window;

@end


#import "GuessChildAppDelegate.h"
#import "WifeBirthdayController.h"

@implementation GuessChildAppDelegate

@synthesize window;


#pragma mark -
#pragma mark Application lifecycle

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
   
    //CGRect frame = [[UIScreen mainScreen] bounds];
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   
    WifeBirthdayController* rootViewController = [[[WifeBirthdayController alloc] init] autorelease];
    simple_ = [[UINavigationController alloc] initWithRootViewController:rootViewController];
   
    [window addSubview:simple_.view];

    // Override point for customization after application launch.
   
  [window makeKeyAndVisible];
   
    return YES;
}

-(void)dealloc {
    [window release];
    [super dealloc];
}

@end

 

本想记录下应用委托类的用法,结果复习了一下应用程序的启动过程。

附一份社会热点评论短文。

 


《史记. 切糕传》: 贩切糕者, 多为西域人也。富可敌国。其业暴利,因有民曰:「一两五十,一刀三斤。」更有甚者曰:「一刀杨幂上床, 两刀帝都买房,三刀兰博到手,四刀盖茨认娘」。 故欧美人遇奢侈且无力购买之物时大多惊呼:「哦,卖糕的!」


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3