当前位置:  编程技术>移动开发
本页文章导读:
    ▪给UIAlertView UIActionSheet 平添block支持        给UIAlertView UIActionSheet 添加block支持block是个好语法, 可偏偏 IOS 原生的UIAlertView UIActionSheet不支持block,本文将给上述个类添加block的支持, .h文件 -(void) handlerClickedButton:(void (^)(NSInteger btnIndex))aBlo.........
    ▪ Copy步骤        Copy方法 NSArray NSMutableArray copy NSArrayNSArray NSMutableArray mutableCopy NSMutableArrayNSDictionary NSMutableDictionary copy NSDictionaryNSMutableDictionary NSDictionary mutableCopy NSMutableDictionary// // main.m // MutableCopy // // Creat.........
    ▪ APN(default、mms、supl、dun、hipri接入点部类的区别)       APN(default、mms、supl、dun、hipri接入点类型的区别) 设置APN上网时,大家可能经常遇到这个问题:为什么有时要填写default有时要填写supl,而彩信又偏偏要mms?这个问题留到最后,让我们看看每.........

[1]给UIAlertView UIActionSheet 平添block支持
    来源: 互联网  发布时间: 2014-02-18
给UIAlertView UIActionSheet 添加block支持

block是个好语法, 可偏偏 IOS 原生的UIAlertView UIActionSheet不支持block,本文将给上述个类添加block的支持,

.h文件

-(void) handlerClickedButton:(void (^)(NSInteger btnIndex))aBlock;

.m文件


-(void) handlerClickedButton:(void (^)(NSInteger btnIndex))aBlock{
    self.delegate = self;
    objc_setAssociatedObject(self, UIActionSheet_key_clicked, aBlock, OBJC_ASSOCIATION_COPY);
}

-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    void (^block)(NSInteger btnIndex) = objc_getAssociatedObject(self, UIActionSheet_key_clicked);
    
    if (block) block(buttonIndex);
}


按照这种思路将UIAlertView,UIActionSheet 委托全部重写一遍


@interface UIAlertView (Block)

-(void) handlerClickedButton:(void (^)(NSInteger btnIndex))aBlock;
-(void) handlerCancel:(void (^)(void))aBlock;
-(void) handlerWillPresent:(void (^)(void))aBlock;
-(void) handlerDidPresent:(void (^)(void))aBlock;
-(void) handlerWillDismiss:(void (^)(NSInteger btnIndex))aBlock;
-(void) handlerDidDismiss:(void (^)(NSInteger btnIndex))aBlock;
-(void) handlerShouldEnableFirstOtherButton:(BOOL (^)(void))aBlock;

@end

@interface UIActionSheet (Block)

-(void) handlerClickedButton:(void (^)(NSInteger btnIndex))aBlock;
-(void) handlerCancel:(void (^)(void))aBlock;
-(void) handlerWillPresent:(void (^)(void))aBlock;
-(void) handlerDidPresent:(void (^)(void))aBlock;
-(void) handlerWillDismiss:(void (^)(void))aBlock;
-(void) handlerDidDismiss:(void (^)(NSInteger btnIndex))aBlock;

@end

调用的时候

    UIAlertView *alertView = [[[UIAlertView alloc] initWithTitle:@"title" message:@"msg" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil] autorelease];
    [alertView handlerClickedButton:^(NSInteger btnIndex) {
        NSLogD(@"%d", btnIndex);
    }];
    [alertView show];

其实真这样全部改造下了发先也没简化多少,ui的代码和业务逻辑的代码混在一起了,反而代码更加混乱.

需要dome的同学请自行下载吧

XYQuickDevelop

dome 在点击Something里


    
[2] Copy步骤
    来源: 互联网  发布时间: 2014-02-18
Copy方法
NSArray NSMutableArray copy NSArrayNSArray NSMutableArray mutableCopy NSMutableArrayNSDictionary NSMutableDictionary copy NSDictionaryNSMutableDictionary NSDictionary mutableCopy NSMutableDictionary


//
//  main.m
//  MutableCopy
//
//  Created by rayln on 13-9-13.
//  Copyright (c) 2013年 rayln. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"

void copy(){
    //若要copy自定义的对象,必须实现NSCopying协议, 并且实现copyWithZone方法
    Student *stu = [[Student alloc] init];
    Student *stu1 = [stu copy];
    
    [stu release];
    [stu1 release];
}

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

    @autoreleasepool {
#pragma mark - mutablecopy	深拷贝
        NSString *str1 = @"100";
        NSMutableString *str2 = [str1 mutableCopy];
        
        //copy出来的对象需要释放内存	
        [str2 release];
        
        
#pragma mark - copy 浅拷贝
        NSString *string1 = @"101";
        NSString *string2 = [string1 copy];
        //string1对象和string2对象是同一个对象,因为NSString本来就是不可变的
        
        [string2 release];
        
        Student *stu = [[Student alloc] init];
        NSMutableString *name = [[NSMutableString alloc] initWithString:@"rayln"];
        NSMutableString *passport = [[NSMutableString alloc] initWithString:@"445281"];
        stu.name = name;
        stu.passport = passport;
        [name appendString:@"Guan"];
        [passport appendString:@"1983"];
        
        //由此可见,retain策略的话,外面重新符值,student的name也会改变
        //使用copy策略的话,外面重新符值,student的passport还是没有改变
        NSLog(@"Student.name:%@  name:%@", stu.name, name);
        NSLog(@"Student.passport:%@  passport:%@", stu.passport, passport);
        
        [name release];
        [passport release];
        [stu release];
    }
    return 0;
}




Student.h
//
//  Student.h
//  MutableCopy
//
//  Created by rayln on 13-9-13.
//  Copyright (c) 2013年 rayln. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Student : NSObject <NSCopying>

//建议NSString对象用copy,其他对象用retain策略
@property (nonatomic, retain) NSString *name;
@property (nonatomic, copy) NSString *passport;

@end


Student.m
//
//  Student.m
//  MutableCopy
//
//  Created by rayln on 13-9-13.
//  Copyright (c) 2013年 rayln. All rights reserved.
//

#import "Student.h"

@implementation Student
//实现copyWithZone方法,使用copy方法必须实现他
- (id)copyWithZone:(NSZone *)zone{
    Student *stu = [[Student allocWithZone:zone] init];
    stu.name = self.name;
    stu.passport = self.passport;
    return stu;
}

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

@end

    
[3] APN(default、mms、supl、dun、hipri接入点部类的区别)
    来源: 互联网  发布时间: 2014-02-18
APN(default、mms、supl、dun、hipri接入点类型的区别)

设置APN上网时,大家可能经常遇到这个问题:
为什么有时要填写default有时要填写supl,而彩信又偏偏要mms?
这个问题留到最后,让我们看看每个接入点类型的含义:
英文原文来自于Google Android Developers
原文连接:http://developer.android.com/reference/android/net/ConnectivityManager.html
我尽量用通俗易懂的语言来解释每个类型的含义,若您是开发者,请尽量阅读英文原文。

1、default
‍默认网络连接,当激活时所有数据传输都使用该连接,不能与其他网络连接同时使用

?View Code JAVA
1
2
3
4
5
6
[java] view plaincopyprint?
 
  • <span >/**
  •   * The Default Mobile data connection. When active, all data traffic
  •   * will use this connection by default. Should not coexist with other
  •   * default connections.
  •   */</span> 
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE <span >=</span> <span >0</span><span >;</span> 
  • [java] view plaincopyprint?
     
  • <span >/** 
  •   * The Default Mobile data connection. When active, all data traffic 
  •   * will use this connection by default. Should not coexist with other 
  •   * default connections. 
  •   */</span>  
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE <span >=</span> <span >0</span><span >;</span>  
  • 适用场合:绝大部分正常上网时可以使用
    2、mms
    彩信专用连接,此连接与default类似,用于与载体的多媒体信息服务器对话的应用程序,此连接能与default连接同时使用

    ?View Code JAVA
    1
    2
    3
    4
    5
    6
    7
    
    [java] view plaincopyprint?
     
  • <span >/**
  •   * An MMS-specific Mobile data connection. This connection may be the
  •   * same as TYPE_MOBILE but it may be different. This is used
  •   * by applications needing to talk to the carrier's Multimedia Messaging
  •   * Service servers. It may coexist with default data connections.
  •   */</span> 
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_MMS <span >=</span> <span >2</span><span >;</span> 
  • [java] view plaincopyprint?
     
  • <span >/** 
  •   * An MMS-specific Mobile data connection. This connection may be the 
  •   * same as TYPE_MOBILE but it may be different. This is used 
  •   * by applications needing to talk to the carrier's Multimedia Messaging 
  •   * Service servers. It may coexist with default data connections. 
  •   */</span>  
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_MMS <span >=</span> <span >2</span><span >;</span>  
  • 适用场合:使用彩信服务时,必须有mms类型的接入点,不必选中,应用程序会自动使用此接入点
    3、supl
    是Secure User Plane Location“安全用户面定位”的简写,此连接与default类似,用于帮助定位设备与载体的安全用户面定位服务器对话的应用程序,此连接能与default连接同时使用

    ?View Code JAVA
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [java] view plaincopyprint?
     
  • <span >/**
  •   * A SUPL-specific Mobile data connection. This connection may be the
  •   * same as {@link #TYPEMOBILE} but it may be different. This is used
  •   * by applications needing to talk to the carrier's Secure User Plane
  •   * Location servers for help locating the device. It may coexist with
  •   * default data connections.
  •   * {@hide}
  •   */</span> 
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_SUPL <span >=</span> <span >3</span><span >;</span> 
  • [java] view plaincopyprint?
     
  • <span >/** 
  •   * A SUPL-specific Mobile data connection. This connection may be the 
  •   * same as {@link #TYPEMOBILE} but it may be different. This is used 
  •   * by applications needing to talk to the carrier's Secure User Plane 
  •   * Location servers for help locating the device. It may coexist with 
  •   * default data connections. 
  •   * {@hide} 
  •   */</span>  
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_SUPL <span >=</span> <span >3</span><span >;</span>  
  • 适用场合:需要自动切换wap与net接入点的、需要把手机当临时AP的
    对SUPL技术感兴趣的朋友,不妨看下以下文章
    SUPL技术(一)http://blog.sina.com.cn/s/blog_537f4a11010008tw.html
    SUPL技术(二)http://blog.sina.com.cn/s/blog_537f4a11010008uf.html
    SUPL技术(三)http://blog.sina.com.cn/s/blog_537f4a11010008ws.html
    SUPL技术(四)http://blog.sina.com.cn/s/blog_537f4a11010008yf.html
    4、dun
    Dial Up Networking拨号网络的简称,此连接与default连接类似,用于执行一个拨号网络网桥,使载体能知道拨号网络流量的应用程序,此连接能与default连接同时使用

    ?View Code JAVA
    1
    2
    3
    4
    5
    6
    7
    8
    
    [java] view plaincopyprint?
     
  • <span >/**
  •   * A DUN-specific Mobile data connection. This connection may be the
  •   * same as {@link #TYPEMOBILE} but it may be different. This is used
  •   * by applicaitons performing a Dial Up Networking bridge so that
  •   * the carrier is aware of DUN traffic. It may coexist with default data
  •   * connections.
  •   */</span> 
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_DUN <span >=</span> <span >4</span><span >;</span> 
  • [java] view plaincopyprint?
     
  • <span >/** 
  •   * A DUN-specific Mobile data connection. This connection may be the 
  •   * same as {@link #TYPEMOBILE} but it may be different. This is used 
  •   * by applicaitons performing a Dial Up Networking bridge so that 
  •   * the carrier is aware of DUN traffic. It may coexist with default data 
  •   * connections. 
  •   */</span>  
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_DUN <span >=</span> <span >4</span><span >;</span>  
  • 适用场合:需要使用运营商无线热点的,CMCC、ChinaNet等
    5、hipri
    高优先级网络,与default类似,但路由设置不同。
    只有当进程访问移动DNS服务器,并明确要求使用requestRouteToHost(int, int)才会使用此连接
    (这个我也不太懂,翻译的应该很有问题….)

    ?View Code JAVA
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [java] view plaincopyprint?
     
  • <span >/**
  •   * A High Priority Mobile data connection. This connection is typically
  •   * the same as {@link #TYPEMOBILE} but the routing setup is different.
  •   * Only requesting processes will have access to the Mobile DNS servers
  •   * and only IP's explicitly requested via {@link #requestRouteToHost}
  •   * will route over this interface.
  •   *{@hide}
  •   */</span> 
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_HIPRI <span >=</span> <span >5</span><span >;</span> 
  • [java] view plaincopyprint?
     
  • <span >/** 
  •   * A High Priority Mobile data connection. This connection is typically 
  •   * the same as {@link #TYPEMOBILE} but the routing setup is different. 
  •   * Only requesting processes will have access to the Mobile DNS servers 
  •   * and only IP's explicitly requested via {@link #requestRouteToHost} 
  •   * will route over this interface. 
  •   *{@hide} 
  •   */</span>  
  •   <span >public</span> <span >static</span> <span >final</span> <span >int</span> TYPE_MOBILE_HIPRI <span >=</span> <span style="color:#cc

  •     
    最新技术文章:
    ▪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