From 4aa049fc0475be0d35b169b38297a2d5ef756e11 Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Thu, 25 Jul 2019 21:03:31 +0800 Subject: [PATCH] add DoricJSCore --- iOS/Doric.podspec | 2 +- iOS/Example/Example/ViewController.m | 16 +- iOS/Example/Podfile.lock | 2 +- .../Pods/Headers/Private/Doric/DoricContext.h | 1 + .../Private/Doric/DoricJSCoreExecutor.h | 1 + .../Private/Doric/DoricJSEngineProtocal.h | 1 + .../Pods/Headers/Public/Doric/DoricContext.h | 1 + .../Public/Doric/DoricJSCoreExecutor.h | 1 + .../Public/Doric/DoricJSEngineProtocal.h | 1 + .../Pods/Local Podspecs/Doric.podspec.json | 3 +- iOS/Example/Pods/Manifest.lock | 2 +- .../Pods/Pods.xcodeproj/project.pbxproj | 282 ++++++++++-------- iOS/Pod/Classes/DoricContext.h | 16 + iOS/Pod/Classes/DoricContext.m | 12 + iOS/Pod/Classes/DoricJSCoreExecutor.h | 16 + iOS/Pod/Classes/DoricJSCoreExecutor.m | 54 ++++ iOS/Pod/Classes/DoricJSEngineProtocal.h | 27 ++ iOS/Pod/Classes/UIView+Doric.m | 2 +- 18 files changed, 303 insertions(+), 137 deletions(-) create mode 120000 iOS/Example/Pods/Headers/Private/Doric/DoricContext.h create mode 120000 iOS/Example/Pods/Headers/Private/Doric/DoricJSCoreExecutor.h create mode 120000 iOS/Example/Pods/Headers/Private/Doric/DoricJSEngineProtocal.h create mode 120000 iOS/Example/Pods/Headers/Public/Doric/DoricContext.h create mode 120000 iOS/Example/Pods/Headers/Public/Doric/DoricJSCoreExecutor.h create mode 120000 iOS/Example/Pods/Headers/Public/Doric/DoricJSEngineProtocal.h create mode 100644 iOS/Pod/Classes/DoricContext.h create mode 100644 iOS/Pod/Classes/DoricContext.m create mode 100644 iOS/Pod/Classes/DoricJSCoreExecutor.h create mode 100644 iOS/Pod/Classes/DoricJSCoreExecutor.m create mode 100644 iOS/Pod/Classes/DoricJSEngineProtocal.h diff --git a/iOS/Doric.podspec b/iOS/Doric.podspec index 6f0f3dcd..08a09ce5 100644 --- a/iOS/Doric.podspec +++ b/iOS/Doric.podspec @@ -36,7 +36,7 @@ TODO: Add long description of the pod here. # 'Doric' => ['Doric/Assets/*.png'] # } - # s.public_header_files = 'Pod/Classes/**/*.h' + s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3' end diff --git a/iOS/Example/Example/ViewController.m b/iOS/Example/Example/ViewController.m index 4e40e673..6bc4de2e 100644 --- a/iOS/Example/Example/ViewController.m +++ b/iOS/Example/Example/ViewController.m @@ -7,6 +7,8 @@ // #import "ViewController.h" +#import "UIView+Doric.h" +#import "DoricJSCoreExecutor.h" @interface ViewController () @@ -16,7 +18,19 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + UILabel *label = [[UILabel alloc] init]; + label.text = @"Hello,Doric"; + [label sizeToFit]; + label.centerX = self.view.width/2; + label.centerY = self.view.height/2; + [self.view addSubview:label]; + DoricJSCoreExecutor *jse = [[DoricJSCoreExecutor alloc] init]; + @try{ + NSString *ret = [jse loadJSScript:@"typef Reflect" source:@"test"]; + NSLog(@"js result %@", ret); + }@catch(NSException *e){ + NSLog(@"catch Exception: %@,reason is %@",e.name,e.reason); + } } diff --git a/iOS/Example/Podfile.lock b/iOS/Example/Podfile.lock index 81a26c4d..e4b93732 100644 --- a/iOS/Example/Podfile.lock +++ b/iOS/Example/Podfile.lock @@ -9,7 +9,7 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - Doric: 71784e35f8e3fd7a71facef9f5d766678f0d187a + Doric: c188883bf1a470b34161319be05378fc3db1ef10 PODFILE CHECKSUM: 012563d71439e7e33e976dca3b59664ed56cee39 diff --git a/iOS/Example/Pods/Headers/Private/Doric/DoricContext.h b/iOS/Example/Pods/Headers/Private/Doric/DoricContext.h new file mode 120000 index 00000000..d2e13664 --- /dev/null +++ b/iOS/Example/Pods/Headers/Private/Doric/DoricContext.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/DoricContext.h \ No newline at end of file diff --git a/iOS/Example/Pods/Headers/Private/Doric/DoricJSCoreExecutor.h b/iOS/Example/Pods/Headers/Private/Doric/DoricJSCoreExecutor.h new file mode 120000 index 00000000..d44ada7c --- /dev/null +++ b/iOS/Example/Pods/Headers/Private/Doric/DoricJSCoreExecutor.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/DoricJSCoreExecutor.h \ No newline at end of file diff --git a/iOS/Example/Pods/Headers/Private/Doric/DoricJSEngineProtocal.h b/iOS/Example/Pods/Headers/Private/Doric/DoricJSEngineProtocal.h new file mode 120000 index 00000000..0103ed57 --- /dev/null +++ b/iOS/Example/Pods/Headers/Private/Doric/DoricJSEngineProtocal.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/DoricJSEngineProtocal.h \ No newline at end of file diff --git a/iOS/Example/Pods/Headers/Public/Doric/DoricContext.h b/iOS/Example/Pods/Headers/Public/Doric/DoricContext.h new file mode 120000 index 00000000..d2e13664 --- /dev/null +++ b/iOS/Example/Pods/Headers/Public/Doric/DoricContext.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/DoricContext.h \ No newline at end of file diff --git a/iOS/Example/Pods/Headers/Public/Doric/DoricJSCoreExecutor.h b/iOS/Example/Pods/Headers/Public/Doric/DoricJSCoreExecutor.h new file mode 120000 index 00000000..d44ada7c --- /dev/null +++ b/iOS/Example/Pods/Headers/Public/Doric/DoricJSCoreExecutor.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/DoricJSCoreExecutor.h \ No newline at end of file diff --git a/iOS/Example/Pods/Headers/Public/Doric/DoricJSEngineProtocal.h b/iOS/Example/Pods/Headers/Public/Doric/DoricJSEngineProtocal.h new file mode 120000 index 00000000..0103ed57 --- /dev/null +++ b/iOS/Example/Pods/Headers/Public/Doric/DoricJSEngineProtocal.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/DoricJSEngineProtocal.h \ No newline at end of file diff --git a/iOS/Example/Pods/Local Podspecs/Doric.podspec.json b/iOS/Example/Pods/Local Podspecs/Doric.podspec.json index fb01b921..bbc2b54d 100644 --- a/iOS/Example/Pods/Local Podspecs/Doric.podspec.json +++ b/iOS/Example/Pods/Local Podspecs/Doric.podspec.json @@ -19,5 +19,6 @@ "ios": "8.0" }, "source_files": "Pod/Classes/**/*", - "resources": "Pod/Assets/*.js" + "resources": "Pod/Assets/*.js", + "public_header_files": "Pod/Classes/**/*.h" } diff --git a/iOS/Example/Pods/Manifest.lock b/iOS/Example/Pods/Manifest.lock index 81a26c4d..e4b93732 100644 --- a/iOS/Example/Pods/Manifest.lock +++ b/iOS/Example/Pods/Manifest.lock @@ -9,7 +9,7 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - Doric: 71784e35f8e3fd7a71facef9f5d766678f0d187a + Doric: c188883bf1a470b34161319be05378fc3db1ef10 PODFILE CHECKSUM: 012563d71439e7e33e976dca3b59664ed56cee39 diff --git a/iOS/Example/Pods/Pods.xcodeproj/project.pbxproj b/iOS/Example/Pods/Pods.xcodeproj/project.pbxproj index c8618c1b..e484d8f7 100644 --- a/iOS/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/iOS/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,12 +7,17 @@ objects = { /* Begin PBXBuildFile section */ + 163CE092FF0B3C12257FB737B241F6F9 /* DoricJSCoreExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3418792D83A4B1A07D2A26ACAE87C8B5 /* DoricJSCoreExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1817959702E97518E7BE82A2CD7FEBAD /* UIView+Doric.m in Sources */ = {isa = PBXBuildFile; fileRef = F9E24AE704A553A235FA4BF46FFBF9C8 /* UIView+Doric.m */; }; + 185BFEAF761FFA91593408024D2F4734 /* DoricContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 36160F2D3E728ED5706F30631D0444B5 /* DoricContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A647CADF58112057EEE78DDEDF36FCB /* Pods-ExampleUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4552DFC8FC2E3B5E34ECA08D5890844E /* Pods-ExampleUITests-dummy.m */; }; 284799F0E725D903C373F72F3133F620 /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F53C7E53C548173948E138F5EAAC9B7 /* Pods-Example-dummy.m */; }; 47760758FAE8B89D52E95BE946B53B85 /* Pods-ExampleTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 51DA648ED8D0D483360D5BA602654A61 /* Pods-ExampleTests-dummy.m */; }; - 6645BC1791AF478120EC2EA9D9CA9AEA /* UIView+Doric.m in Sources */ = {isa = PBXBuildFile; fileRef = 947078585C6CB5F00AA249FF3B9607A9 /* UIView+Doric.m */; }; - 7FFD89D9C65CA1D3B7C4669833110878 /* Doric-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E792BB451875C362E138D451D7EBA623 /* Doric-dummy.m */; }; - 86C6B286039CC68C61AC8B0FCDC92A68 /* UIView+Doric.h in Headers */ = {isa = PBXBuildFile; fileRef = C5DB64ABD56D6432F41A4E25C5F08F12 /* UIView+Doric.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D39D9329D55E4DF14FE1D8BADBC4DA8 /* DoricJSEngineProtocal.h in Headers */ = {isa = PBXBuildFile; fileRef = E33C09803409E93BFC7E39FD13CBF5C0 /* DoricJSEngineProtocal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7216FB6DCBBEDCA052A357C7655D28A /* DoricJSCoreExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = FD645884D2AC3A9E0C8B6744BE671363 /* DoricJSCoreExecutor.m */; }; + B78A5EB9F8CB35B376BF7541547D9ECC /* DoricContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 9788C5D3BB78ACEADB162BB739DB8EC8 /* DoricContext.m */; }; + D02396C67164473CB51C04BC34202307 /* Doric-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E59B7F3FA81AC0862A3612C24DA277 /* Doric-dummy.m */; }; + DDE1F9FFA982E45029119BEF0C6B7D29 /* UIView+Doric.h in Headers */ = {isa = PBXBuildFile; fileRef = 07896C3DB19764EAA6472D08D719791F /* UIView+Doric.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -20,22 +25,27 @@ isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C2DE0E641AEE496DBAE2EF07A035E1E2; + remoteGlobalIDString = 6DC305ABCA53EC5BF7FB4580339397E7; remoteInfo = Doric; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 01A1F6852D87DC53BCB1B6B6FE7EECF1 /* Pods-ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleTests.release.xcconfig"; sourceTree = ""; }; + 07896C3DB19764EAA6472D08D719791F /* UIView+Doric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+Doric.h"; path = "Pod/Classes/UIView+Doric.h"; sourceTree = ""; }; 0CCC4486F64D26B3F19BA6A63DBD2A33 /* libPods-ExampleUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-ExampleUITests.a"; path = "libPods-ExampleUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0D41410F57E9B95140CB86A4065375C6 /* Doric-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Doric-prefix.pch"; sourceTree = ""; }; 12B878F1FD71B60D653F0F5A783CA95A /* libPods-ExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-ExampleTests.a"; path = "libPods-ExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 13E59B7F3FA81AC0862A3612C24DA277 /* Doric-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Doric-dummy.m"; sourceTree = ""; }; 192AE18287322BEEE32E2B90807CD2D4 /* libDoric.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDoric.a; path = libDoric.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1B848EFFAE8406F1462B99BA59DF5B0A /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 1E76E67CCA8332986E95E78670B68A7E /* Pods-ExampleUITests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ExampleUITests-frameworks.sh"; sourceTree = ""; }; 24390EFD555DD124430DFF9724065945 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 32F7499F26C2F8871011055318451503 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.release.xcconfig"; sourceTree = ""; }; + 3418792D83A4B1A07D2A26ACAE87C8B5 /* DoricJSCoreExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DoricJSCoreExecutor.h; path = Pod/Classes/DoricJSCoreExecutor.h; sourceTree = ""; }; 352BB69BD445911D67E242A3CB6D7298 /* Pods-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleTests.debug.xcconfig"; sourceTree = ""; }; + 36160F2D3E728ED5706F30631D0444B5 /* DoricContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DoricContext.h; path = Pod/Classes/DoricContext.h; sourceTree = ""; }; 38AE1F4549532393840E0AFBBF624C51 /* libPods-Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-Example.a"; path = "libPods-Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3D277B7938BCFFD12B40311621BDC388 /* Doric.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = Doric.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 3DA6C06795DC0A5CCE08FE0A93490213 /* Pods-ExampleTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ExampleTests-acknowledgements.markdown"; sourceTree = ""; }; 4552DFC8FC2E3B5E34ECA08D5890844E /* Pods-ExampleUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ExampleUITests-dummy.m"; sourceTree = ""; }; 4A2C01971EED68EB1AC43E54FE0FF4BF /* Pods-ExampleTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleTests-acknowledgements.plist"; sourceTree = ""; }; @@ -43,22 +53,22 @@ 518BFC36C6DDA143C2924A9DF620156F /* Pods-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-acknowledgements.plist"; sourceTree = ""; }; 51DA648ED8D0D483360D5BA602654A61 /* Pods-ExampleTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ExampleTests-dummy.m"; sourceTree = ""; }; 5D74D99FC589B7AE9B1061880AF0AAF2 /* Pods-ExampleUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleUITests.release.xcconfig"; sourceTree = ""; }; - 69B3A9DCFF1C392DC35FDF66E52C7C4B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 83F27F62D3570DD3EED7EDC698B39673 /* Pods-ExampleUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleUITests-acknowledgements.plist"; sourceTree = ""; }; 8908E207FAF96E979F6B81FE964B66E4 /* Pods-ExampleTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ExampleTests-resources.sh"; sourceTree = ""; }; + 8D5D33674405E984E4CD4D07C0893B87 /* Doric.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = Doric.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 93B86D9B8CC9EE4710A7EAC45E2B40AF /* Pods-ExampleUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleUITests.debug.xcconfig"; sourceTree = ""; }; - 947078585C6CB5F00AA249FF3B9607A9 /* UIView+Doric.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+Doric.m"; path = "Pod/Classes/UIView+Doric.m"; sourceTree = ""; }; + 9788C5D3BB78ACEADB162BB739DB8EC8 /* DoricContext.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DoricContext.m; path = Pod/Classes/DoricContext.m; sourceTree = ""; }; A3C87156B34E44AF7BC940F794A3EEE0 /* Pods-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-acknowledgements.markdown"; sourceTree = ""; }; A7C069247E2F891CB6A5AE5543BC4C8B /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = ""; }; AFAAF574DA9AD669899852EFBA99E10C /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.debug.xcconfig"; sourceTree = ""; }; - B8142BAB06F4440811C7E8D429A6F503 /* Doric-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Doric-prefix.pch"; sourceTree = ""; }; - C5DB64ABD56D6432F41A4E25C5F08F12 /* UIView+Doric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+Doric.h"; path = "Pod/Classes/UIView+Doric.h"; sourceTree = ""; }; + B7AED348A44426E0026028C90AF7D355 /* Doric.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Doric.xcconfig; sourceTree = ""; }; CE1BBE6E92CA9DC3880D159CD803E553 /* Pods-ExampleUITests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ExampleUITests-resources.sh"; sourceTree = ""; }; CF4462A66582B7755AF57D07F45E671E /* Pods-ExampleTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ExampleTests-frameworks.sh"; sourceTree = ""; }; D291C334AF09BCAE4D49F304783DA69A /* Pods-ExampleUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ExampleUITests-acknowledgements.markdown"; sourceTree = ""; }; DCAAC1238554F9CC2D49D7D5165DF1A0 /* Pods-Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-resources.sh"; sourceTree = ""; }; - E792BB451875C362E138D451D7EBA623 /* Doric-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Doric-dummy.m"; sourceTree = ""; }; - E8E6E765E01B21D70E53A99784ED84AF /* Doric.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Doric.xcconfig; sourceTree = ""; }; + E33C09803409E93BFC7E39FD13CBF5C0 /* DoricJSEngineProtocal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DoricJSEngineProtocal.h; path = Pod/Classes/DoricJSEngineProtocal.h; sourceTree = ""; }; + F9E24AE704A553A235FA4BF46FFBF9C8 /* UIView+Doric.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+Doric.m"; path = "Pod/Classes/UIView+Doric.m"; sourceTree = ""; }; + FD645884D2AC3A9E0C8B6744BE671363 /* DoricJSCoreExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DoricJSCoreExecutor.m; path = Pod/Classes/DoricJSCoreExecutor.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -69,6 +79,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 382B761D4A9024658E3270D27B34F516 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C9A35FDCCDE6934108749EBAA0962D1A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -83,34 +100,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FAE799D636CC6A5C6053646E31DD3BAE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0D2CC7D30CBF1C6184B8AE23464319A4 /* Doric */ = { + 0C4672B0C519318FC933AD3A32F0CB3E /* Pod */ = { isa = PBXGroup; children = ( - C5DB64ABD56D6432F41A4E25C5F08F12 /* UIView+Doric.h */, - 947078585C6CB5F00AA249FF3B9607A9 /* UIView+Doric.m */, - 701F954067FEBBDFA31FDB01D79B3E05 /* Pod */, - AC47D3FF0EFF07B08D267ADADCF4420B /* Support Files */, + 8D5D33674405E984E4CD4D07C0893B87 /* Doric.podspec */, + 1B848EFFAE8406F1462B99BA59DF5B0A /* LICENSE */, ); - name = Doric; - path = ../..; - sourceTree = ""; - }; - 0D8D20A4ABCF79537CE2CA886639A024 /* Development Pods */ = { - isa = PBXGroup; - children = ( - 0D2CC7D30CBF1C6184B8AE23464319A4 /* Doric */, - ); - name = "Development Pods"; + name = Pod; sourceTree = ""; }; 2383BF80F17A300CD2E5E93425AB1DE5 /* Pods-ExampleUITests */ = { @@ -139,6 +138,17 @@ name = Products; sourceTree = ""; }; + 42543ABAB7867F2D4B67AF145B681B3D /* Support Files */ = { + isa = PBXGroup; + children = ( + B7AED348A44426E0026028C90AF7D355 /* Doric.xcconfig */, + 13E59B7F3FA81AC0862A3612C24DA277 /* Doric-dummy.m */, + 0D41410F57E9B95140CB86A4065375C6 /* Doric-prefix.pch */, + ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/Doric"; + sourceTree = ""; + }; 5AA0E8BB1B60D8046D4AE5D1103C1A51 /* Pods-Example */ = { isa = PBXGroup; children = ( @@ -154,15 +164,6 @@ path = "Target Support Files/Pods-Example"; sourceTree = ""; }; - 701F954067FEBBDFA31FDB01D79B3E05 /* Pod */ = { - isa = PBXGroup; - children = ( - 3D277B7938BCFFD12B40311621BDC388 /* Doric.podspec */, - 69B3A9DCFF1C392DC35FDF66E52C7C4B /* LICENSE */, - ); - name = Pod; - sourceTree = ""; - }; 7C8BDF0846F1BDADA9ED62DC4B0BF6A6 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -173,15 +174,21 @@ name = "Targets Support Files"; sourceTree = ""; }; - AC47D3FF0EFF07B08D267ADADCF4420B /* Support Files */ = { + 80010616620836ED96ECE443B73E3131 /* Doric */ = { isa = PBXGroup; children = ( - E8E6E765E01B21D70E53A99784ED84AF /* Doric.xcconfig */, - E792BB451875C362E138D451D7EBA623 /* Doric-dummy.m */, - B8142BAB06F4440811C7E8D429A6F503 /* Doric-prefix.pch */, + 36160F2D3E728ED5706F30631D0444B5 /* DoricContext.h */, + 9788C5D3BB78ACEADB162BB739DB8EC8 /* DoricContext.m */, + 3418792D83A4B1A07D2A26ACAE87C8B5 /* DoricJSCoreExecutor.h */, + FD645884D2AC3A9E0C8B6744BE671363 /* DoricJSCoreExecutor.m */, + E33C09803409E93BFC7E39FD13CBF5C0 /* DoricJSEngineProtocal.h */, + 07896C3DB19764EAA6472D08D719791F /* UIView+Doric.h */, + F9E24AE704A553A235FA4BF46FFBF9C8 /* UIView+Doric.m */, + 0C4672B0C519318FC933AD3A32F0CB3E /* Pod */, + 42543ABAB7867F2D4B67AF145B681B3D /* Support Files */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/Doric"; + name = Doric; + path = ../..; sourceTree = ""; }; CE14EBF1165E6AA176DA9177C3B1C3FD /* Pods-ExampleTests */ = { @@ -203,7 +210,7 @@ isa = PBXGroup; children = ( 24390EFD555DD124430DFF9724065945 /* Podfile */, - 0D8D20A4ABCF79537CE2CA886639A024 /* Development Pods */, + FB9AA77B88C34DF6B67BE6FFC908228B /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, 29D5F571358D2DB73A9BA656A4698F3A /* Products */, 7C8BDF0846F1BDADA9ED62DC4B0BF6A6 /* Targets Support Files */, @@ -217,6 +224,14 @@ name = Frameworks; sourceTree = ""; }; + FB9AA77B88C34DF6B67BE6FFC908228B /* Development Pods */ = { + isa = PBXGroup; + children = ( + 80010616620836ED96ECE443B73E3131 /* Doric */, + ); + name = "Development Pods"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -234,11 +249,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 74879FD0A8632519E8A4097245C87AD1 /* Headers */ = { + 61043590617D921A3137E4FA4630F715 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 86C6B286039CC68C61AC8B0FCDC92A68 /* UIView+Doric.h in Headers */, + 185BFEAF761FFA91593408024D2F4734 /* DoricContext.h in Headers */, + 163CE092FF0B3C12257FB737B241F6F9 /* DoricJSCoreExecutor.h in Headers */, + 7D39D9329D55E4DF14FE1D8BADBC4DA8 /* DoricJSEngineProtocal.h in Headers */, + DDE1F9FFA982E45029119BEF0C6B7D29 /* UIView+Doric.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -269,6 +287,23 @@ productReference = 0CCC4486F64D26B3F19BA6A63DBD2A33 /* libPods-ExampleUITests.a */; productType = "com.apple.product-type.library.static"; }; + 6DC305ABCA53EC5BF7FB4580339397E7 /* Doric */ = { + isa = PBXNativeTarget; + buildConfigurationList = EAD29E9CC0DA144743205C4A54A49BEE /* Build configuration list for PBXNativeTarget "Doric" */; + buildPhases = ( + 61043590617D921A3137E4FA4630F715 /* Headers */, + 43FB81C9191AAE0213FE98D025B83ACE /* Sources */, + 382B761D4A9024658E3270D27B34F516 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Doric; + productName = Doric; + productReference = 192AE18287322BEEE32E2B90807CD2D4 /* libDoric.a */; + productType = "com.apple.product-type.library.static"; + }; A345F604E78B54781FD1B7BFD7E0448C /* Pods-Example */ = { isa = PBXNativeTarget; buildConfigurationList = 6D3B301D75D9DA0B718112AB6FA2118A /* Build configuration list for PBXNativeTarget "Pods-Example" */; @@ -304,23 +339,6 @@ productReference = 12B878F1FD71B60D653F0F5A783CA95A /* libPods-ExampleTests.a */; productType = "com.apple.product-type.library.static"; }; - C2DE0E641AEE496DBAE2EF07A035E1E2 /* Doric */ = { - isa = PBXNativeTarget; - buildConfigurationList = AEF6BF9A913B19127EBECF840944DD48 /* Build configuration list for PBXNativeTarget "Doric" */; - buildPhases = ( - 74879FD0A8632519E8A4097245C87AD1 /* Headers */, - 9C655B4A33979961C978FCD52EC487E0 /* Sources */, - FAE799D636CC6A5C6053646E31DD3BAE /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Doric; - productName = Doric; - productReference = 192AE18287322BEEE32E2B90807CD2D4 /* libDoric.a */; - productType = "com.apple.product-type.library.static"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -342,7 +360,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - C2DE0E641AEE496DBAE2EF07A035E1E2 /* Doric */, + 6DC305ABCA53EC5BF7FB4580339397E7 /* Doric */, A345F604E78B54781FD1B7BFD7E0448C /* Pods-Example */, BA4EA2DB7D0DFAB75914F3144F15AC7B /* Pods-ExampleTests */, 0D40E2A39D3301AE94BB9AA453AA15E1 /* Pods-ExampleUITests */, @@ -351,6 +369,17 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ + 43FB81C9191AAE0213FE98D025B83ACE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D02396C67164473CB51C04BC34202307 /* Doric-dummy.m in Sources */, + B78A5EB9F8CB35B376BF7541547D9ECC /* DoricContext.m in Sources */, + A7216FB6DCBBEDCA052A357C7655D28A /* DoricJSCoreExecutor.m in Sources */, + 1817959702E97518E7BE82A2CD7FEBAD /* UIView+Doric.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 58573A8A9E1C4C60B5AF016E0BFEDD29 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -375,27 +404,39 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9C655B4A33979961C978FCD52EC487E0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7FFD89D9C65CA1D3B7C4669833110878 /* Doric-dummy.m in Sources */, - 6645BC1791AF478120EC2EA9D9CA9AEA /* UIView+Doric.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 08E845E70040821DC5837F1F7E153B37 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Doric; - target = C2DE0E641AEE496DBAE2EF07A035E1E2 /* Doric */; + target = 6DC305ABCA53EC5BF7FB4580339397E7 /* Doric */; targetProxy = 9AAB3FEE40A6C9C78740731F5FA3622B /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 0044609B6189F624A76DF9CFD33BE49A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B7AED348A44426E0026028C90AF7D355 /* Doric.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Doric/Doric-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 186698CE97528A8EB1609B0FEDACB16B /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 352BB69BD445911D67E242A3CB6D7298 /* Pods-ExampleTests.debug.xcconfig */; @@ -460,49 +501,6 @@ }; name = Debug; }; - 64DB7D210F0E69A83410C41D8C1C8664 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E8E6E765E01B21D70E53A99784ED84AF /* Doric.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Doric/Doric-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 882BCCA23E03F817BFD1AB1F9AF7A89A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E8E6E765E01B21D70E53A99784ED84AF /* Doric.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Doric/Doric-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 89A6DFEFC3C449DF8D62D3722885CA10 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 5D74D99FC589B7AE9B1061880AF0AAF2 /* Pods-ExampleUITests.release.xcconfig */; @@ -612,6 +610,28 @@ }; name = Debug; }; + B9F14048CCF00D7BF6BFCFAC7365F3CD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B7AED348A44426E0026028C90AF7D355 /* Doric.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Doric/Doric-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; D46117332C6CDC3C82674F7036CCA9FE /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 01A1F6852D87DC53BCB1B6B6FE7EECF1 /* Pods-ExampleTests.release.xcconfig */; @@ -726,15 +746,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AEF6BF9A913B19127EBECF840944DD48 /* Build configuration list for PBXNativeTarget "Doric" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 882BCCA23E03F817BFD1AB1F9AF7A89A /* Debug */, - 64DB7D210F0E69A83410C41D8C1C8664 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; CD72F6F681C3B80D01A31B0977B11433 /* Build configuration list for PBXNativeTarget "Pods-ExampleTests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -744,6 +755,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + EAD29E9CC0DA144743205C4A54A49BEE /* Build configuration list for PBXNativeTarget "Doric" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0044609B6189F624A76DF9CFD33BE49A /* Debug */, + B9F14048CCF00D7BF6BFCFAC7365F3CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; diff --git a/iOS/Pod/Classes/DoricContext.h b/iOS/Pod/Classes/DoricContext.h new file mode 100644 index 00000000..4ad0e734 --- /dev/null +++ b/iOS/Pod/Classes/DoricContext.h @@ -0,0 +1,16 @@ +// +// DoricContext.h +// Doric +// +// Created by pengfei.zhou on 2019/7/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface DoricContext : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/iOS/Pod/Classes/DoricContext.m b/iOS/Pod/Classes/DoricContext.m new file mode 100644 index 00000000..f5c47341 --- /dev/null +++ b/iOS/Pod/Classes/DoricContext.m @@ -0,0 +1,12 @@ +// +// DoricContext.m +// Doric +// +// Created by pengfei.zhou on 2019/7/25. +// + +#import "DoricContext.h" + +@implementation DoricContext + +@end diff --git a/iOS/Pod/Classes/DoricJSCoreExecutor.h b/iOS/Pod/Classes/DoricJSCoreExecutor.h new file mode 100644 index 00000000..de5ca17d --- /dev/null +++ b/iOS/Pod/Classes/DoricJSCoreExecutor.h @@ -0,0 +1,16 @@ +// +// DoricJSCoreExecutor.h +// Doric +// +// Created by pengfei.zhou on 2019/7/25. +// + +#import +#import "DoricJSEngineProtocal.h" +NS_ASSUME_NONNULL_BEGIN + +@interface DoricJSCoreExecutor : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/iOS/Pod/Classes/DoricJSCoreExecutor.m b/iOS/Pod/Classes/DoricJSCoreExecutor.m new file mode 100644 index 00000000..6e522bc3 --- /dev/null +++ b/iOS/Pod/Classes/DoricJSCoreExecutor.m @@ -0,0 +1,54 @@ +// +// DoricJSCoreExecutor.m +// Doric +// +// Created by pengfei.zhou on 2019/7/25. +// + +#import "DoricJSCoreExecutor.h" + +@interface DoricJSCoreExecutor() + +@property(nonatomic,strong) JSContext *jsContext; + +@end + +@implementation DoricJSCoreExecutor +-(instancetype)init { + if(self = [super init]){ + _jsContext = [[JSContext alloc] init]; + } + return self; +} + +-(void)checkJSException { + if(self.jsContext.exception){ + NSString *errMsg = [NSString stringWithFormat:@"%@ (line %@ in the generated bundle)\n/***StackTrace***/\n%@/***StackTrace***/", self.jsContext.exception, self.jsContext.exception[@"line"],self.jsContext.exception[@"stack"]]; + @throw [[NSException alloc] initWithName:@"DoricJS" reason:errMsg userInfo:nil]; + } +} + +-(NSString *)loadJSScript:(NSString *)script source:(NSString *)source { + NSString *ret = [[self.jsContext evaluateScript:script withSourceURL:[NSURL URLWithString:source]] toString]; + [self checkJSException]; + return ret; +} + +-(void)injectGlobalJSObject:(NSString *)name obj:(NSDictionary *)obj { + self.jsContext[name] = obj; + [self checkJSException]; +} + +-(void)injectGlobalJSFunction:(NSString *)name func:(DoricOCFunction)func { + self.jsContext[name] = func; + [self checkJSException]; +} + +-(JSValue *)invokeObject:(NSString *)objName method:(NSString *)funcName args:(NSArray *)args { + JSValue *obj = [self.jsContext objectForKeyedSubscript:objName]; + JSValue *ret = [obj invokeMethod:funcName withArguments:args]; + [self checkJSException]; + return ret; +} + +@end diff --git a/iOS/Pod/Classes/DoricJSEngineProtocal.h b/iOS/Pod/Classes/DoricJSEngineProtocal.h new file mode 100644 index 00000000..46063e96 --- /dev/null +++ b/iOS/Pod/Classes/DoricJSEngineProtocal.h @@ -0,0 +1,27 @@ +// +// DoricJSEngineProtocal.h +// Doric +// +// Created by pengfei.zhou on 2019/7/25. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef JSValue*(^DoricOCFunction)(); + +@protocol DoricJSEngineProtocal + +-(NSString *) loadJSScript:(NSString *)script source:(NSString *)source; + +-(void) injectGlobalJSFunction:(NSString *)name func:(DoricOCFunction)func; + +-(void) injectGlobalJSObject:(NSString *)name obj:(NSDictionary *)obj; + +-(JSValue *) invokeObject: (NSString *)objName method:(NSString *)funcName args:(NSArray *)args; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iOS/Pod/Classes/UIView+Doric.m b/iOS/Pod/Classes/UIView+Doric.m index 30f8c83a..18ae8c98 100644 --- a/iOS/Pod/Classes/UIView+Doric.m +++ b/iOS/Pod/Classes/UIView+Doric.m @@ -109,5 +109,5 @@ - (void)setCenterY:(CGFloat)centerY { frame.origin.y = centerY - self.frame.size.height/2; [self setFrame:frame]; } - + @end