`
jsntghf
  • 浏览: 2532483 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

override的简单示例

    博客分类:
  • iOS
阅读更多

overrideAppDelegate.h

 

#import <UIKit/UIKit.h>

@interface overrideAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@end

 

overrideAppDelegate.m

 

#import "overrideAppDelegate.h"
#import "NSString+Addition.h"

@implementation overrideAppDelegate

@synthesize window;

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
	[window makeKeyAndVisible];    
    if ([NSString swizze]) {
        NSString *s1 = @"Hello, everyone";
		char *s2 = (char *)[s1 UTF8String];
		NSLog(@"%s", s2);
    }    
    return YES;
}

#pragma mark -
#pragma mark Memory management

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

@end

 

NSString+Addition.h

 

#import <Foundation/Foundation.h>

@interface NSString (NSString_Addition)

+ (BOOL)swizze;

@end

 

NSString+Addition.m

 

#import "NSString+Addition.h"
#import <objc/objc-class.h>

#define CSTRING_CUSTOM_ADDITON "^_^"

@implementation NSString (NSString_Addition)

- (const char *)ovUTF8String {
	char *sOriginal = (char *)[self ovUTF8String];
	int iOrgLen = (NULL == sOriginal ? 0 : strlen(sOriginal));
	char *sCustom = (char *)malloc(iOrgLen + strlen(CSTRING_CUSTOM_ADDITON) + 1);
    if (NULL != sCustom) {
        if (NULL != sOriginal) {
            strcpy(sCustom, sOriginal);
        } 
        strcat(sCustom, CSTRING_CUSTOM_ADDITON);
    }
	return (const char *)sCustom;
}

+ (BOOL)swizze {
    Method oldMethod = class_getInstanceMethod(self, NSSelectorFromString(@"UTF8String"));
    if (!oldMethod)
		return NO;
	Method newMethod = class_getInstanceMethod(self, NSSelectorFromString(@"ovUTF8String"));
	if (!newMethod)
		return NO;
	method_exchangeImplementations(oldMethod, newMethod);
	return YES;
}

@end
分享到:
评论

相关推荐

    aidl简单示例

    本示例将通过"aidlclientdemo"和"aidlserverdemo"两个项目,详细介绍如何使用AIDL进行简单的IPC操作。 首先,我们来理解AIDL的基本概念。在AIDL文件中,我们可以定义服务端提供的接口以及接口中的方法,这些方法会...

    FragmentTabHost简单示例

    在本示例中,我们将深入探讨`FragmentTabHost`的使用方法,以及如何为小白开发者提供清晰的指导。 首先,我们需要理解`FragmentTabHost`的基本概念。它是`TabHost`的一个扩展,将`TabHost`与`Fragment`结合在一起,...

    RecyclerView简单示例代码

    以下是一个简单的Java代码示例: ```java public class RecyclerViewAdapter extends RecyclerView.Adapter&lt;RecyclerViewAdapter.MyViewHolder&gt; { private List&lt;String&gt; dataList; public RecyclerViewAdapter...

    简单实用的webview示例代码

    本文将深入探讨“简单实用的webview示例代码”,并讲解如何复写`shouldOverrideUrlLoading`方法,以提升用户体验和控制页面加载行为。 1. **WebView基本用法** WebView是Android SDK提供的一种视图组件,它能够...

    Websocket简单示例(Spring Boot)

    这个简单的示例展示了WebSocket在实时通信中的应用,以及Spring Boot和Stomp协议如何帮助我们简化开发过程。 在实际应用中,WebSocket可以应用于许多场景,比如实时聊天、股票行情、在线游戏等,其强大的实时性和...

    andriod 数据库 简单示例

    虽然在简单示例中可能不会用到,但在涉及多个应用间数据共享或者需要暴露数据给其他应用时,ContentProvider是一个很好的选择。 总结来说,Android中的SQLite数据库提供了一种高效且灵活的方式来存储和管理应用数据...

    Textview 富文本简单示例

    在Android开发中,`TextView`是用于展示文本的常用组件,但它的功能远不止于简单的文字显示。当需要实现“富文本”效果时,`TextView`可以与`SpannableString`、`Spanned`或者`Html.fromHtml()`等工具一起工作,以...

    java socket简单示例

    在这个简单的Java Socket示例中,客户端向服务器发送一条消息,服务器接收到消息后立即回应,然后客户端打印出服务器的回应。这种模式常用于简单的命令应答或文件传输等场景。 总结来说,Java Socket编程提供了在两...

    工厂模式简单示例代码

    工厂模式是一种常用的面向对象设计...在实际项目中,无论是简单的一般工厂模式还是静态工厂模式,都可以根据需求选择合适的方式来实现对象的创建。理解并熟练运用工厂模式,对于提升代码质量和可维护性具有重要意义。

    java定时任务调度之Timer 简单示例

    下面是一个使用`Timer`类创建定时任务的简单示例: ```java import java.util.Timer; import java.util.TimerTask; public class MyTimerExample { public static void main(String[] args) { // 创建一个Timer...

    Fragment三个简单示例

    以下是对Fragment的三个简单示例的详细解释: 1. **加载两个Fragment** 在这个示例中,我们通常会创建两个Fragment类,例如`FragmentA`和`FragmentB`,它们分别代表不同的UI部分。然后,在布局文件中,可以预定义...

    mina简单示例

    标题中的"mina简单示例"指的是使用Apache Mina框架构建一个简单的客户端和服务端的程序。在Java开发中,Mina提供了一种高效的方式来处理网络连接和数据传输,特别适合于构建大型、复杂的网络服务。 描述中的"mina...

    SwipeMenuListView源码的简单示例

    这个简单的示例将帮助我们理解如何集成并使用SwipeMenuListView。 首先,我们需要在项目中引入SwipeMenuListView库。如果你使用的是Gradle构建系统,可以在`build.gradle`文件的dependencies部分添加依赖。例如: ...

    Override错误已解决

    假设我们有一个简单的 Android 应用程序,其中包含一个名为 `HelloWorld` 的类,该类继承自 `Activity`。在 `HelloWorld` 类中,我们需要重写 `onCreate()` 方法: ```java public class HelloWorld extends ...

    Xlistview框架简单示例

    在这个简单的示例中,我们将深入探讨Xlistview的基本用法、主要特点以及如何在实际项目中集成和使用。 首先,Xlistview的核心优势在于它的分段加载和下拉刷新功能。它支持上拉加载更多数据,当用户滚动到列表底部时...

    动态使用Fragment简单示例

    本示例“动态使用Fragment简单示例”将详细介绍如何在运行时动态地添加和管理Fragment。 首先,我们需要理解Fragment的基本概念。Fragment是Android应用程序中的一个模块化组件,它可以在Activity中单独存在或者与...

    虚函数简单示例

    1. **覆盖(Override)**:子类可以使用`override`关键字来重写基类的虚函数,确保在调用时执行子类的实现。这是多态的基础。 2. **新方法(New Method)**:如果子类只是想创建一个新的同名函数,而不是覆盖基类的...

    springboot连接redis简单示例

    通过以上步骤,我们就完成了Spring Boot连接Redis的简单示例。现在你可以启动项目,通过HTTP请求访问`/redis/set`、`/redis/get`和`/redis/delete`端点来测试Redis的存取和删除功能。 总结来说,本示例展示了如何在...

    WebService简单示例

    ### WebService简单示例知识点详解 #### 一、概述 本文档主要介绍如何在Java环境下搭建和使用一个简单的WebService服务。通过本示例,读者能够了解WebService的基本概念、搭建流程及其实现方式。 #### 二、环境...

    openfire 插件简单示例

    本示例将带你走进Openfire插件开发的世界,通过一个简单的Servlet插件来介绍开发流程。 首先,我们需要理解Openfire插件的基本结构。一个Openfire插件通常包含以下几个部分: 1. **Plugin.java**:这是插件的核心...

Global site tag (gtag.js) - Google Analytics