• 关于

    delegate

    的搜索结果

问题

关于iOS开发,UIPickerView设置了datasource却不显示数据的问题,

爵霸 2019-12-01 20:22:48 1042 浏览量 回答数 1

回答

声明delegate属性,再用@protocol写上方法,最后在实现代码必要的地方判断delegate是否响应此方法,响应就交给delegate处理

爵霸 2019-12-02 02:05:26 0 浏览量 回答数 0

回答

简单对比一下jQuery各个版本的live和bind函数实现方法:1.7版本前的live:live: { add: function( handleObj ) { jQuery.event.add( this, liveConvert( handleObj.origType, handleObj.selector ), jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); }, remove: function( handleObj ) { jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); } },1.7版本后的live:live: function( types, data, fn ) { jQuery( this.context ).on( types, this.selector, data, fn ); return this; },1.9版本中,更是取消了live函数,取而代之的是采用delegate。如果看看bind的实现的话,也能发现最终的代码如下:bind: function( types, data, fn ) { return this.on( types, null, data, fn ); },发现了吧,都是on,bind和on是等价的。下面说一下delegate和bind(这里我们就当bind等于on好了)的区别,1个原则:对于已经存在的页面元素,用bind,对于“未来”存在的页面元素,用delegate似乎有点拗口,举个栗子:你有一个页面,里面有个按钮,现在要针对这个按钮绑定click事件,我们用bind还是delegate呢,我们用bind,因为按钮元素直接存在与页面中:$('#objId').bind('click', function() {});同样,你有一个页面,页面没有按钮,但是n秒后(或者某些操作后)会出现一个按钮,但我们希望页面初始化的时候就给按钮绑定click事件,这时候就用delegate即可;$(document).delegate('#objId', 'click', function() {});delegate是将事件注册到已经存在的document,当发生click事件时,只需要匹配#objId是否跟触发的对象一致,一致即执行函数。所以,从效率来说,bind占优,但在某些场合(特别是大量使用了Ajax的页面),delegate却不失为一种降低开发难度的办法。

小旋风柴进 2019-12-02 02:24:31 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

SubViewController.h @protocol SubViewControllerDelegate <NSObject> -(void)changeArray:(NSString *) str;//声明代理方法 @end @interface SubViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> { id<SubViewControllerDelegate> delegate; } @property (nonatomic, unsafe_unretained) id<SubViewControllerDelegate> delegate; 在SubViewController.m的btn绑定事件中实现代理方法 - (void)changeRoot{ [_delegate changeArray:@"change"]; } 接收代理 在RootViewController里面接收代理(注意这里需要对SubViewController实例进行delegate = self操作) -(void)changeArray:(NSString *) str { [self.array addObject:str]; [self.tableview reload]; }

a123456678 2019-12-02 03:15:06 0 浏览量 回答数 0

回答

说起来有点长。先说Delegate,这是一个OO中的概念,调用一个对象的成员函数在OO中的术语是给这个对象发送消息,对象接收到一个消息时可以选择自己处理掉,或者将这个消息转发给另外一个对象,转发到的那个对象就被称之为delegate。Cocoa程序在启动的时候,runtime会给每个app创建一个NSApplication对象实例,NSApplication对象会接收到Cocoa框架发送来的一些消息,比如告诉它程序已经启动或者用户想要退出等,但NSApplication对象并不亲自处理这个消息,因为每个程序拥有的NSApplication对象都是一样的,但每个程序对于这些消息的处理方式却不一样,所以NSApplication对象让你指定一个Delegate对象来处理这些消息,以得到你想要的结果。AppDelegate.swift中定义了一个class,这个class的实例对象就是这个程序中NSApplication的delegate。这个实例对象的创建是由Cocoa框架做的。当然你可以在一个程序里建立不止一个NSApplicationDelegate的子类,也可以创建不止一个NSApplicationDelegate对象,但你的App里定义了一个xib文件,这个xib文件中指定了Cocoa到底应该创建哪个类的实例作为全局NSApplication对象的delegate。

a123456678 2019-12-02 03:15:19 0 浏览量 回答数 0

回答

首先建议题主去看下jq的源码。live是新版jq废弃的功能,相当于delegate的document版。bind和delegate...给你看一段jq的源码你就很清楚了(为简洁省略了部分代码):jQuery.fn.extend({ bind: function( types, data, fn ) { return this.on( types, null, data, fn ); }, delegate: function( selector, types, data, fn ) { return this.on( types, selector, data, fn ); }, });on是bind和delegate的底层实现,后两者是为了在特定场合简化代码或使代码可读性更强的快捷方式,或者说仅仅是为了保留历史兼容性而存在的东西。而on的基本功能则最终通过jQuery.event.add来实现:return this.each( function() { jQuery.event.add( this, types, fn, data, selector ); });还是建议题主读一下jq源码,不必通读,直接搜索你关注的关键字即可。这里不就jQuery.event.add做更多展开了。实际上在常规用途上,你可以认为on和delegate的区别仅仅在于传参数方式不同而已,而bind则是一个进一步删除了冒泡绑定能力的版本。

小旋风柴进 2019-12-02 02:19:28 0 浏览量 回答数 0

回答

delegate 函数有actionSheet本身这个参数呀。(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex;可以用来判断是哪个actionSheet。至于怎么区分,创建 actionSheet 的时候可以加 tag;其次还可以把 actionSheet 存起来,在 delegate 函数里判if (actionSheet == self.actionSheet1)这样。不过 actionSheet 可能会 retain delegate,保存的时候用弱引用比较好……

a123456678 2019-12-02 03:14:45 0 浏览量 回答数 0

问题

在AppDelegate中能不能创建自定义的delegate?

爵霸 2019-12-01 19:31:05 932 浏览量 回答数 1

回答

在我的方法中奖提供一个create_delegate函数,可通过下面两种方法来调用:create_delegate(&object, &member_function)create_delegate(&function)第一种方法创建一个对象并提供一个operator()成员函数,第二个方法生成一个函数指针,两种方法都兼容 type function<...>. 1 class A 2 { 3 int i; 4 public: 5 A(int k):i(k) {} 6 7 auto get()const ->int { return i;} 8 auto set(int v)->void { i = v;} 9 10 auto inc(int g)->int& { i+=g; return i;} 11 auto incp(int& g)->int& { g+=i; return g;} 12 13 auto f5 (int a1, int a2, int a3, int a4, int a5)const ->int 14 { 15 return i+a1+a2+a3+a4+a5; 16 } 17 18 auto set_sum4(int &k, int a1, int a2, int a3, int a4)->void 19 { 20 i+=a1+a2+a3+a4; 21 k = i; 22 } 23 24 auto f8 (int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) const ->int 25 { 26 return i+a1+a2+a3+a4+a5+a6+a7+a8; 27 } 28 29 static auto sqr(double x)->double { return x*x; } 30 }; 请注意你并不需要一定使用 C++ 的 auto 函数语法,你也可以使用传统的方法,然后我们使用下面方法创建一个类:`1A a(11);`接下来我们创建委派: 1 auto set1 = create_delegate(&a,&A::set); 2 auto inc = create_delegate(&a,&A::inc); 3 std::function<int(int&)> incp = create_delegate(&a,&A::incp); 4 auto af5 = create_delegate(&a,&A::f5); 5 auto set_sum4= create_delegate(&a,&A::set_sum4); 6 auto af8 = create_delegate(&a,&A::f8); 7 auto sqr = create_delegate(&A::sqr); // static function </int(int&)> 1 set1(25); 2 int x = 5; 3 int k = inc(x); 4 k = incp(x); 5 std::cout << "a.get():" << a.get() << std::endl; 6 std::cout << "k: " << k << std::endl; 7 std::cout << "x: " << x << std::endl; 8 std::cout << "af5(1,2,3,4,5): " << af5(1,2,3,4,5) << std::endl; 9 10 set_sum4(x,1,2,3,20); 11 std::cout << "after set_sum4(x,1,2,3,20)" << std::endl; 12 std::cout << "a.get(): " << a.get() << std::endl; 13 std::cout << "x: " << x << std::endl; 14 std::cout << "af8(1,2,3,4,5,6,7,8): " << af8(1,2,3,4,5,6,7,8) << std::endl; 15 std::cout << "sqr(2.1): " << sqr(2.1) << std::endl; 执行上述程序的打印结果如下: 1 a.get():30 2 k: 35 3 x: 35 4 af5(1,2,3,4,5): 45 5 after set_sum4(x,1,2,3,20) 6 a.get(): 56 7 x: 56 8 af8(1,2,3,4,5,6,7,8): 92 9 sqr(2.1): 4.41 关键点 对于一个不是 volatile 和 const 的简单函数而言,实现是非常简单的,我们只需要创建一个类保存两个指针,一个是对象,另外一个是成员函数: 1 template <class T, class R, class ... P> 2 struct _mem_delegate 3 { 4 T* m_t; 5 R (T::*m_f)(P ...); 6 _mem_delegate(T* t, R (T::*f)(P ...) ):m_t(t),m_f(f) {} 7 R operator()(P ... p) 8 { 9 return (m_t->*m_f)(p ...); 10 } 11 }; 可变模板 variadic template 允许定义任意个数和类型参数的operator()函数,而create_function 实现只需简单返回该类的对象: 1 template <class T, class R, class ... P> 2 _mem_delegate<T,R,P ...> create_delegate(T* t, R (T::*f)(P ...)) 3 { 4 _mem_delegate<T,R,P ...> d(t,f); 5 return d; 6 } 实际中,我们需要另外的三个实现用于覆盖 const、volatile 和 const volatile 三种成员函数,这也是为什么传统使用 #define 宏很便捷的原因,让你无需重写代码段,下面是完整的实现: 1 template <class F> 2 F* create_delegate(F* f) 3 { 4 return f; 5 } 6 #define _MEM_DELEGATES(_Q,_NAME)\ 7 template <class T, class R, class ... P>\ 8 struct _mem_delegate ## _NAME\ 9 {\ 10 T* m_t;\ 11 R (T::*m_f)(P ...) _Q;\ 12 _mem_delegate ## _NAME(T* t, R (T::*f)(P ...) _Q):m_t(t),m_f(f) {}\ 13 R operator()(P ... p) _Q\ 14 {\ 15 return (m_t->*m_f)(p ...);\ 16 }\ 17 };\ 18 \ 19 template <class T, class R, class ... P>\ 20 _mem_delegate ## _NAME<T,R,P ...> create_delegate(T* t, R (T::*f)(P ...) _Q)\ 21 {\ 22 _mem_delegate ##_NAME<T,R,P ...> d(t,f);\ 23 return d;\ 24 } 25 26 _MEM_DELEGATES(,Z) 27 _MEM_DELEGATES(const,X) 28 _MEM_DELEGATES(volatile,Y) 29 _MEM_DELEGATES(const volatile,W)

a123456678 2019-12-02 01:56:37 0 浏览量 回答数 0

回答

你发送端就要序列化数据,接收端就不会错位的。一般情况下是不会产生错位的。每次接收数据你可以计算NSData的大小的,不需要使用什么subdataWithRange,最好的好就是使用append。delegate这个是接收到一定的长度或者小于这个长度就会delegate。如果数据量很大的话,会产生分成很多个数据包传输。所以一次delegate有可能不是一个完整的数据。

a123456678 2019-12-02 03:12:57 0 浏览量 回答数 0

回答

有很多种方法实现。 首先,在应用的delegate中建立一个导航控制器: self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; self.navigationController = [[ UINavigationController alloc ] initWithRootViewController:self.viewController ]; self.window.rootViewController = self.navigationController; [self.window makeKeyAndVisible]; 展示新的view controller: OtherViewController *ovc = [[ OtherViewController alloc ] initWithNibName:@"OtherViewController" bundle:nil ]; [ self.navigationController pushViewController:ovc animated:YES ]; 返回: [ self.navigationController popViewControllerAnimated:YES ]; 等到回调之后,在工程中加一个protocol: @protocol AbstractViewControllerDelegate <NSObject> @required - (void)abstractViewControllerDone; @end 然后对需要回调的view controller 进行delegate触发: @interface OtherViewController : UIViewController <AbstractViewControllerDelegate> @property (nonatomic, assign) id<AbstractViewControllerDelegate> delegate; @end 最后,获得一个新的view controller: OtherViewController *ovc = [[ OtherViewController alloc ] initWithNibName:@"OtherViewController" bundle:nil ]; ovc.delegate = self; [ self.navigationController pushViewController:ovc animated:YES ]; 等到关闭了viewcontroller,进行: [self.delegate abstractViewControllerDone]; [ self.navigationController popViewControllerAnimated:YES ]; 在符合刚刚那个protocol的根viewcontroller中,加上这个方法: -(void) abstractViewControllerDone { } 这样你就做了一个调用,还要很多设置,根据你自己的需求。

爵霸 2019-12-02 02:25:00 0 浏览量 回答数 0

回答

使用如下代码会得到全局共享的AppDelegate[[UIApplication sharedApplication] delegate]你在向这个array里添加object的时候应该这么写AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; [appDelegate.books addObject:aBook];在BooksDetailViewController.m中读取时这么写AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; id book = [appDelegate.books objectAtIndex:0];但是我想问一下,你怎么把bookArray放到appDelegate这里呢...

爵霸 2019-12-02 02:22:21 0 浏览量 回答数 0

问题

关于OS设置的代理没有被调用 的问题

爵霸 2019-12-01 20:14:31 828 浏览量 回答数 1

回答

1.bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置;2.bind()函数在jquery1.7版本以前比较受推崇,1.7版本出来之后,官方已经不推荐用bind(),替代函数为on(),这也是1.7版本新添加的函数,同样,可以 用来代替live()函数,live()函数在1.9版本已经删除;3.live()函数和delegate()函数两者类似,但是live()函数在执行速度,灵活性和CSS选择器支持方面较delegate()差些,想了解具体情况,请戳这: http://kb.cnblogs.com/page/94469/4.bind()支持Jquery所有版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+; 

a123456678 2019-12-02 02:09:49 0 浏览量 回答数 0

回答

你的问题出在设置uitableview的delegate,datasource的时机不对.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath如上方法为uitableview的协议方法,需在先指定datasource的情况下才会被调用. 正确的做法是-(void)viewDidLoad { //在uitableivew load数据前,指明uitableview的delegate,datasource self.tableView.delegate=self; self.tableView.dataSource=self; }把在协议方法中的[tableView setDelegate:self]; [tableView setDataSource:self];删除,再试.应该就可以了.

爵霸 2019-12-02 02:15:01 0 浏览量 回答数 0

回答

Block 的确很有很多优势,比如同样代码使用 block 替代,大多数情况下,可以减少代码的量。Block 可以降低我们对 delegate 的依赖:在 block 出现以前,我们如果调用一段代码,在一段时间之后它会给我们返回,这时我们就需要用到 delegate 或者 NSNotification, 当然使用 delegate 和 Notification 是没什么问题的,但是使用过 delegate 和 Notification 就会知道,我们需要把与它们相关的代码写的到处都是。使用 block 可以在一定程度上避免这个问题。本身 block 就是一个普通的 Objective-C 对象,正因为是个对象,所以 block 可以被作为参数传递,也可以作为返回值返回,或者可以用来给变量赋值。理论上说,我们写的绝大部分代码都可以写成 block 形式。但是,毕竟 block 的语法和我们一般使用的有所不同,太多的使用反而可能造成代码混乱,可读性变差。我一般的习惯是,涉及 UIAnimation 时会使用,这个大家平时使用的肯定不少。还有就是涉及一些数组的操作会使用,有一些例如 enumerateObjectsUsingBlock 这样的方法,会使操作数组变得非常方便。

a123456678 2019-12-02 03:15:02 0 浏览量 回答数 0

回答

你可以将controller作为你自定义类的delegate,在delegate里面做操作处理。

a123456678 2019-12-02 03:12:44 0 浏览量 回答数 0

回答

就是没有设置collection view的delegate和datasource,还有layout的delegate没写,数据源没有初始化。

杨冬芳 2019-12-02 02:58:53 0 浏览量 回答数 0

回答

来自@Jesse Rusak 的回答: Objective-C 委托就是已被指定为另一个委托的对象,没有特殊的创建过程,你只要定义一个实现你感兴趣的委托方法的类就可以。(虽然委托使用正式协议,但你必须得声明委托来执行该协议,如下所示)例如,假设你有个NSWindow。如果你想要实现他的委托的 windowDidMove: 方法,你可以创建一个这样的类: @implementation MyClass (void)windowDidMove:(NSNotification*)notification { // ... } @end然后创建一个MyClass的实例并制定为window的委托: MyClass *myDelegate = [[MyClass alloc] init];[window setDelegate: myDelegate];在NSWindow方面, 可能有类似于此的代码使用 respondsToSelector: 来看委托是否响应windowDidMove:信息,如何合适就发送。 if([[self delegate] respondsToSelector:@selector(windowDidMove:)]) { [[self delegate] windowDidMove:notification]; }委托资源本身是典型声明的weak(ARC)或assign(预ARC)来避免循环,因为对象委托经常持有强引用该对象(例如,一个视图控制器通常包含视图委托)要定义自己的委托,你需要在某个地方声明方法。有两个基本的方法,苹果的文档协议有讨论过. 1) 一个非正式的协议 这个就和NSWindow差不多,在NSObject的类别实现。例如,继续上面的例子,这是从NSWindow.h:转述的: @interface NSObject(NSWindowNotifications) (void)windowDidMove:(NSNotification *)notification;// ... 其他方法 @end就像上面描述的那样,当调用这个函数的时候,你会使用-respondsToSelector:,委托简单的实现此方法,就完成了。这个方法在苹果的库里是直接常见的,但是新的代码应该是用下面的更现代的方法。 2)一个正式的协议 新的选择是声明一个正式的协议。声明应该像这个样子: @protocol NSWindowNotifications @optional (void)windowDidMove:(NSNotification *)notification;// ...其他方法 @end这类似于一个借口或者抽象基类,因为这为委托建立了一个特殊的类型,这种情况下是NSWindowNotifications。委托执行者应该采用这个协议: @interface MyDelegate // ...@end然后再协议中执行方法。对于诸如@optional(就和大多数委托方法一样)在协议中声明的方法,你仍然需要在调用特殊方法之前检查-respondsToSelector:。苹果建议这种方法,因为这个更精确,不会和NSObject弄混,并且提供更好的工具支持。 优化速度 代替检查委托是否响应选择器,你可以在设置委托时存储相关信息。使用bitfield是一个非常清晰的方法,如下: @protocol SomethingDelegate @optional (void)something:(id)something didFinishLoadingItem:(id)item; (void)something:(id)something didFailWithError:(NSError *)error;@end @interface Something : NSObject@property (nonatomic, weak) id delegate;@end @implementation Something { struct { unsigned int didFinishLoadingItem:1; unsigned int didFailWithError:1; } delegateRespondsTo;}@synthesize delegate; (void)setDelegate:(id )aDelegate {if (delegate != aDelegate) { delegate = aDelegate;delegateRespondsTo.didFinishLoadingItem = [delegate respondsToSelector:@selector(something:didFinishLoadingItem:)]; delegateRespondsTo.didFailWithError = [delegate respondsToSelector:@selector(something:didFailWithError:)];} }@end然后,在正文里,可以通过访问delegateRespondsTo来检查委托处理邮件,而不是一遍又一遍的发送-respondsToSelector:。 来自@Tibidabo 上面的方法很厉害!但是如果你想在1分钟之内解决问题可以尝试一下这个:MyClass.h文件应该像这个样子(用评论添加委托行) import @class MyClass; //定义类,这样协议可以看到MyClass@protocol MyClassDelegate //定义委托协议 (void) myClassDelegateMethod: (MyClass *) sender; //定义在另一个类里实现的委托方法@end //结束协议 @interface MyClass : NSObject {}@property (nonatomic, weak) id delegate; //定义 MyClassDelegate为委托 @endMyClass.m 文件应该像这样: import "MyClass.h" @implementation MyClass @synthesize delegate; //综合MyClassDelegate 委托 (void) myMethodToDoStuff {[self.delegate myClassDelegateMethod:self]; //这个会调用在其他类里实现的方法 } @end为了在其他的类里使用委托(本情况是UIViewController调用MyVC)MyVC.h: import "MyClass.h" @interface MyVC:UIViewController { //make it a delegate for MyClassDelegate}MyVC.m: myClass.delegate = self; //设置委托至自身的某个地方执行委托方法: (void) myClassDelegateMethod: (MyClass *) sender { NSLog(@"Delegates are great!"); } 来自@umop 当用正式的协议方法创建委托支持时,我发现可以确保正确的类型检查(虽然是运行时间,不是编译时间),通过添加如下代码: if (![delegate conformsToProtocol:@protocol(MyDelegate)]) { [NSException raise:@"MyDelegate Exception" format:@"Parameter does not conform to MyDelegate protocol at line %d", (int)__LINE__]; }在你的委托访问(setDelegate)代码,这个能将错误最小化。 来自@Tom Andersen的回答 或许更多的是在于你所缺少的行。如果从C++的视角来看,委托需要一点时间适应,但是基本上“他们只是工作”。委托实现的方式是:设置NSWindow的委托对象,但是对象只为一个或几个可能的委托方法执行。所以会发生一些事,NSWindow想要调用对象,它只使用Objective-c的respondsToSelector方法来决定对象是否被调用,然后再调用。这就是objective-c的实现方式——根据需求寻找方法。用你自己的对象实现这一点是非常琐碎的,没有什么特别的事情,你甚至可以为让一个实例有27个对象的NSArray,完全不同类型的对象,其中只有18个有-(void)setToBue;方法,其他的9个没有。所以在18个需要完成的调用setToBlue,就像这样: for (id anObject in myArray){ if ([anObject respondsToSelector:@selector(@"setToBlue")]) [anObject setToBlue]; }另外,委托是不保留的,所以需要在MyClass dealloc方法中将委托设置为nil。 来自@RDC 的回答: 请看下面的教程是如何一步一步介绍iOS中的委托的。 iOS中的委托我创建了两个 ViewControllers (从一个给另一个发送) FirstViewController 执行委托(提供数据). SecondViewController声明委托(接收数据).

a123456678 2019-12-02 03:13:13 0 浏览量 回答数 0

回答

设置delegate或者注册notification,在播完时用avaudioplayer播录音,录音播完后再开始下一首(也需要设置delegate)。

爵霸 2019-12-02 02:11:48 0 浏览量 回答数 0

问题

UITableView中,既然dataSource拆出去了,delegate该不该拆出去?

a123456678 2019-12-01 19:22:36 756 浏览量 回答数 1

回答

由A创建B,B有delegate指向A。B退出的时候通过delegate向A发消息。A收到消息激活处理方法。在处理方法中创建C,然后跳转到C

杨冬芳 2019-12-02 03:01:12 0 浏览量 回答数 0

问题

判断UITableView上下滑动的方向,不使用scrollview的delegate。

a123456678 2019-12-01 20:27:30 1182 浏览量 回答数 1

回答

没有设置delegate,self.socket.delegate=self;总结过这个内容,挺详细的,自己看吧:http://my.oschina.net/u/2448717/blog/499784

杨冬芳 2019-12-02 02:59:18 0 浏览量 回答数 0

问题

给NSMutableArray创建独立实例

爵霸 2019-12-01 19:22:16 796 浏览量 回答数 1

问题

UITableViewCell 如何获取自身高度

a123456678 2019-12-01 19:22:11 1026 浏览量 回答数 1

问题

谈一下 Jquery 中的 bind(),live(),delegate(),on()的区别?

茶什i 2019-12-01 22:03:56 106 浏览量 回答数 1

问题

写IOS APP时经常要将View的delegate拖到ViewController,这是什么意思?

爵霸 2019-12-01 20:15:10 907 浏览量 回答数 1

回答

-(void)loadXmlToParse { NSURL *url = [[NSBundle mainBundle] URLForResource:@"myXMLFile" withExtension:@"xml"]; NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; parser.delegate = self; [parser parse]; } 你忘了指定delegate

爵霸 2019-12-02 02:14:20 0 浏览量 回答数 0

回答

如果li结构片很多,最佳实践还是事件委托原生js不熟的话,就用jquery的delegate好了比如 $(document).delegate(".dropdown > a","click",function(){/*what you want*/});

云栖技术 2019-12-02 02:20:24 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站