Comments (5)
No,
Because you allocated that object manually as apposed to using Objection. In order to do something like that Objection would need to be modified to bind a particular concrete class to a protocol. Protocols are are atypical in Objection and I think under normal circumstances that using the concrete implementation is fine.
However, I can see this being a legitimate use case and I will keep this issue open as a feature request.
from objection.
I found a workaround using a Custom Objection Provider:
@interface FooProvider : NSObject <JSObjectionProvider> { }
@end
@implementation FooProvider
- (id)createInstance:(JSObjectionInjector*)context {
return [context getObject:[Foo class]];
}
@end
[self bindProvider:[[[FooProvider alloc] init] autorelease] toProtocol:@protocol(IFoo)];
I have also tried to use a block:
[self bindBlock:^(JSObjectionInjector *context) {
return [context getObject:[Foo class]];
} toProtocol:@protocol(IFoo)];
But this ends with an exception:
NSInvalidArgumentException: reason: -[MyModule bindBlock:toProtocol:]: unrecognized selector sent to instance
This is the first time I'm using blocks.
Any idea?
~Thomas
from objection.
tziem,
There is a preprocessor conditional in Objection that will remove block bindings if you are trying to target iOS 3 OR you built with an SDK that pre-dates the 4.0 SDK.
#if NS_BLOCKS_AVAILABLE
- (void)bindBlock:(id (^)(JSObjectionInjector *context))block toClass:(Class)aClass;
- (void)bindBlock:(id (^)(JSObjectionInjector *context))block toProtocol:(Protocol *)aProtocol;
#endif
from objection.
Thanks for the hint, Justin!
I have mistakenly build objection with artifact:ios3.
Now it works!
~Thomas
from objection.
No problem!
from objection.
Related Issues (20)
- Support setting properties of non-object types
- Does objection inject dependencies automatically on creation? HOT 2
- frida ๅฝไปค้่ฏฏ
- Compatibility with Swift HOT 3
- Reseting Objection's global context storage caches HOT 2
- Injection at Initialization HOT 3
- Inject property declared in a category.
- Sharing singleton scope when deriving a new injector HOT 1
- Ability to specify override objects HOT 5
- @objection_initializer not passing arguments HOT 2
- Injecting object with protocol and superclass
- about sample? HOT 1
- why not use modern objective-c
- Why "JSObjectionModule.m" file line fifth to write "#import <Objection/JSObjectionProviderEntry.h>", but not "#import "JSObjectionProviderEntry.h"".
- why JSObjectionEntry's injector property is "assign" not "weak"?
- Passing nil arguments for get objection object HOT 7
- inScope:JSObjectionScopeSingleton doesn't work since Cocoapods version 1.6 HOT 19
- Build is broken on XCode 6.4 HOT 4
- Getting a reference to the JSObjectionInjector which created an object? HOT 2
- Undeclared selector warnings
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from objection.